首页 > 代码库 > 框架学习笔记之Hibernate

框架学习笔记之Hibernate

一、什么是Hibernate

  Hibernate框架是当今主流的持久层框架之一,该框架是基于JDBC的主流持久化框架,使用它之后能够大大简化程序DAO层的代码量,提高工作效率,因此受广大开发人员的喜爱。配合Strut2和Spring框架,就是经典的SSH组合。

二、ORM思想

  学习该框架的编程思想是 ORM(Object Relational Mapping)即对象关系映射是思想,进而对数据库进行CRUD操作。所谓的ORM思想就是把实体对象跟数据库中的表一一对应

技术分享

 

ORM的原理如下技术分享

三、环境搭建

1.所需jar包

技术分享

 

2.两个配置文件

  2.1映射配置文件 

技术分享

 

 2.2核心配置文件

该配置文件通常在src的源文件夹下

技术分享

四、CRUD操作

 

 @Test
public void testCRUD(){    //第一步加载核心配置文件
    Configuration configuration = new Configuration();
    configuration.configure();
    //得到SessionFactory对象
    SessionFactory factory = configuration.buildSessionFactory();
    //得到session对象(此处的session对象相当于jdbc中的connection)
    Session session = factory.openSession();
    //开启事务
    Transaction ts = session.beginTransaction();
    try{


      //此处进行CRUD操作
      //添加操作User
      User user = new User();
      user.set(...);
      session.save(user);


      //查找操作
      User user = session.get(User.class,"uid");//查找指定ID下的对象
  
      //其他查询方式
      //使用Query对象使用hql语句
      Query qr = session.createQuery("from User where 属性名 =?");
       qr.setString(0,"...");
      List<User> user = qr.list();
      //使用Criteria对象查询
      Criteria criteria = session.createCriteria(User。class);
      List<User> list = criteria.list();
      //使用SQLQuery对象查询
      SQLQuery sq = session.createSQLQuery("select * from user ");
      sq.addEntity(User.class);
      List<User> list = sq.list();
     


      //修改操作 先查找在修改
      User user = session.get(User.class,"uid");
      user.set(...);
      session.update(user);

      //删除操作
      User user = session.get(User.class,"uid");
      session.delete(user);
    
      //或者
      User user = new User();
      user.setUid("uid");
      session.delete(user);

  

      ts.commit();
     }catch(Exception e){
      ts.rollback();
    }finally{
      session.close();
      factory.close();
  }
}

 五、实体之间关联

5.1一对多关系

每个实体对应一个映射配置文件 如果两个实体之间是一对多关系是需要两个映射配置文件

one to many中 

one的class标签中加入

	<!--在客户映射文件中表示所有联系人
		使用set标签表示所有联系人
		set标签中的name属性 :属性值写在客户实体类里面表示set集合名称
		实体类里面表示联系人的set集合名称
		一对多见表有外键  
		hibernate机制:双向维护外键字啊一和多哪一方都有配置外键
		在one-to-many中class里面写的是联系人的实体类路径
		 
		 inverse:放弃关系维护  因为hibernate中是双向逐渐维护   
		 -->
		 <set name="setLinkMan" inverse="true" cascade="save-update,delete">
		 	<key column="clid"></key>
		 	<one-to-many class="cn.entity.LinkMan"/>
		 </set>

  

 many的class标签中加入

<many-to-one name="customer" class="cn.entity.Customer" column="clid"></many-to-one>

  

 未完。。。

 本人在校大二学生自学java的,水平有限,出现错误各位大神一定多多指教,谢谢了!

 

 

  

  

 

框架学习笔记之Hibernate