Hibernate中Session对象详解

Session

Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

Hibernate中Session对象是非线程安全的 ,不能定义成全局变量, 只能定义成局部变量。

Session代表的是Hibernate与数据库的链接对象,是与数据库交互的桥梁。

●Session中的API 

        ■保存方法:

           ▲Serializable save(Object obj)   Serializable可序列话  其实是ID

         Customer customer = new Customer();
        	customer.setCust_name("cc");
        	try {
        		Serializable id = seesion.save(customer);
        		System.out.println(id);
			} catch (Exception e) {
				System.out.println(e);
				// TODO: handle exception
			}

结果:

Hibernate中Session对象详解_第1张图片

        ■查询方法:

   ▲T get(Class c,Serializable id);

Hibernate中Session对象详解_第2张图片

              

    ▲T load(Class c,Serializable id);

Hibernate中Session对象详解_第3张图片       

    get 和load的区别 :

     get方法

采用的立即加载,代码执行的时候,就马上发送 sql语句去查询,查询后返回真正的实体,当查询一个找不到的对象会返回为null

     load方法

采用的是延时加载(lazy懒加载),代码执行到的时候,不发送sql语句,当真正用到对象时候才会发送sql.查询后是代理对象。javassist-3.18.1-GA.jar 利用javasisit技术的代理,查询一个找不到的对象 ,返回ObjectNotFoundException

Hibernate中Session对象详解_第4张图片

■修改的方法:

       ▲void update(Object obj)

Hibernate中Session对象详解_第5张图片

■删除的方法:

     ▲void delete(Object obj)

Hibernate中Session对象详解_第6张图片

■保存或更新:

    ▲void saveOrUpdate(Object obj)

Hibernate中Session对象详解_第7张图片

■查询:

▲ SQLQuery createSQLQuery(String queryString);

▲Query createQuery(String queryString);

Hibernate中Session对象详解_第8张图片

你可能感兴趣的:(我的记录(java))