一、什么是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的,水平有限,出现错误各位大神一定多多指教,谢谢了!
时间: 2024-12-19 10:27:31