hibernate学习(三)

实体类编写规则

1 实体类里面属性是私有的

2 私有属性生成公开的get和set方法操作

3 要求实体类有属性作为唯一值(一般使用id值)

4 实体类属性建议基本数据类型,使用基本数据类型对应的包装类

(1)基本数据类型对应的包装类

Int-Integer  ,char-Character,其他都市首字母大写,比如double-Double

5 比如  表示学生的分数 ,加入int scrore

比如学生得了0分,int score=0;

如果表示学生没有参加考试,int score=0;不能准确表示学生是否参加考试

解决:使用包装类就可以了,Integer score=0,表示学生得了0分,表示学生没有参加考试,Integer score=null;

主键生成策略

1 hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以有不同的生成策略

2 hibernate主键生成策略有很多值

        <id name="uid" column="uid">
        <!-- 设置数据库表id增长的策略 
        	 native:生成表id值主键就是自动增长	
        -->
        <generator class="native"></generator>
        </id>

3 在class属性里面有很多的值

(1)native:根据使用的数据库自动选择哪个值

(2)uuid:之前的web阶段写代码生成uuid 值,hibernate帮我们生成uuid值

4 演示生成策略指uuid

(1)使用uuid生成策略,实体类id属性类型,必须是字符串类型

	private String uid;
	public String getUsername() {
		return username;
	}
	public String getUid() {
		return uid;
	}

(2)配置部分写成uuid

        <id name="uid" column="uid">
        <generator class="uuid"></generator>
        </id>

再次生成表如下所示:


实体类操作

对实体类的crud操作

添加操作

1 调用session里面的save方法实现

 User user=new User();  
            user.setUsername("小马哥");  
            user.setPassword("520");  
            user.setAddress("美国");  
            //调用session的方法实现添加  
            session.save(user);  

2 根据id查询

1 调用session中的get方法实现

    package cn.itcase.hibernatetest;  
    import org.hibernate.Session;  
    import org.hibernate.SessionFactory;  
    import org.hibernate.Transaction;  
    import org.hibernate.cfg.Configuration;  
    import org.junit.Test;  
      
    import cn.itcase.hibernate.User;
import cn.itcase.utils.HibernateUtils;  
      
    public class HibernateDemo {  
      
        @Test  
        public void testGet() {  
     //1调用sessionFactory工具类得到sessionFactory
        	 SessionFactory sessionFactory=HibernateUtils.getSessionFactory();
    // 2,使用sessionFactory创建session对象  
            //session类似于conn连接  
            Session session=sessionFactory.openSession();  
    // 3,开启事务  
            Transaction tx=session.beginTransaction();    
    //  4,写具体的crud逻辑操作  
            //根据id查询
            //调用session的get方法实现添加
            //第一个参数,实体类的class
            //第二个参数,id值
            User user=session.get(User.class, 1);  
            System.out.println(user);
    // 5,提交事务  
            tx.commit();  

    // 6,关闭资源  
            session.close();  
            sessionFactory.close();  
        }  
    }  

结果如下


修改操作

1 首先查询,修改值

(1)先根据id查询,返回对象

(2)向返回的user对象里面设置修改之后的值

(3)调用sesion的方法进行update修改

代码如下:

 public class HibernateDemo {  
      @Test
      public void testUpdate() {
    	//1调用sessionFactory工具类得到sessionFactory
     	 SessionFactory sessionFactory=HibernateUtils.getSessionFactory();
 // 2,使用sessionFactory创建session对象  
         //session类似于conn连接  
         Session session=sessionFactory.openSession();  
 // 3,开启事务  
         Transaction tx=session.beginTransaction();    
 //  4修改操作  修改uid为2的username
  //4.1根据id查询
         User user=session.get(User.class, 2);
//4.2向返回的user对象里面设置修改之后的值
         user.setUsername("东方不败");
         //4.3调用session的方法修改,执行的过程--->到user对象里面找到uid的值,根据uid进行修改
         
         session.update(user);
 // 5,提交事务  
         tx.commit();  
 // 6,关闭资源  
         session.close();  
         sessionFactory.close();
      }


删除操作

1 调用session里面的delete方法实现

  @Test
        public void testDelete() {
      	//1调用sessionFactory工具类得到sessionFactory
       	 SessionFactory sessionFactory=HibernateUtils.getSessionFactory();
   // 2,使用sessionFactory创建session对象  
           //session类似于conn连接  
           Session session=sessionFactory.openSession();  
   // 3,开启事务  
           Transaction tx=session.beginTransaction();    
   //  4删除操作  
           //第一种 根据id查询对象
           User user=session.get(User.class, 4);
           session.delete(user);   
           //第二种 
           //User user=new User();
           //user.setUid(3);
           //session.delete(user);
   // 5,提交事务  
           tx.commit();  
   // 6,关闭资源  
           session.close();  
           sessionFactory.close();
        }

猜你喜欢

转载自blog.csdn.net/pan_xi_yi/article/details/80492922
今日推荐