hibernate 5.2.10 的使用
来源:互联网 发布:淘宝会员信誉怎么提升 编辑:程序博客网 时间:2024/05/22 05:14
hibernate 5.2.10 的使用
* 全自动的ORM框架 位于持久层
* ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。 ORM
* 采用元数据来描述对象-关系映射细节, 元数据通常采用 XML 格式, 并且存放在专门的对象-关系映射文件中.
*
* hibernate 和myBatis区别?
* Hibernate: 非常优秀、成熟的 ORM 框架。 完成对象的持久化操作 Hibernate 允许开发者采用面向对象的方式来操作关系数据库。
* 消除那些针对特定数据库厂商的 SQL 代码
* myBatis: 相比 Hibernate 灵活高,运行速度快
* 开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语 句,并且熟练使用sql语句优化功能
*
* 配置细节
* jar包 ,maven 工程,
*
org.hibernate
hibernate-core
5.2.10.Final
获取 sessionFactory 的方式也有了较大的变化 StandardServiceRegistry 标准注册服务 hibernate 的开发步骤 1 实体类 --> .hbm.xml(这两个文件是对应的,一个是实体类 , 一个是数据库的映射) --> hibernate.cfg.xml (hibernate的配置文件 ) * * hibernate.cfg.xml中 * <!-- 需要配置数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> * 5.2.10 需要选择这个版本的方言,或者不配置 ,不然会报错, * 选这个方言,在建表时会采用InnoDB 引擎 ,支持事务 *
import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.youv.app.yang.domain.user.User;public class Crud { Session session = null; Transaction transaction = null; @Before public void befoer() { // 1,先得到session工厂 SessionFactory sessionFactory = null; // 2 创建标准服务注册对象, .configure() 不指定文件,默认取类路径下的 hibernate,cfg.xml StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure("hyang.cfg.xml") .build(); // 3 获取session工厂 sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory(); session = sessionFactory.openSession(); transaction = session.beginTransaction(); } @After public void fin() { session.close(); } /** * 面向对象编程, 对实体类进行操作,hibernater 自动执行 * * 增 session.save(); * 删 先将数据取出,然后再删除 session.delete(对象) * 改 先将数据取出,然后再更改 session.update(对象); * 查 get() , load(); */ @Test public void add() { User user = new User(); user.setUserName("李三"); user.setUserPsw("2343"); session.save(user); transaction.commit(); } @Test public void del() { // 1 根据id获取对像 User user = session.get(User.class, "402881e85d73d1bf015d73d1c25b0000"); // 然后删除对象 session.delete(user); transaction.commit(); } @Test public void update() { // 1 根据id获取对像 User user = session.get(User.class, "402881e85d73d332015d73d335e80000"); // 然后对对象进行修改 user.setUserName("二狗"); session.update(user); transaction.commit(); } /** * 获取数据 ,有两种方式 1 get , 2 load * * 1.get()采用立即加载方式,而load()采用延迟加载; get()方法执行的时候,会立即向数据库发出查询语句, * 而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句 2 * .如果数据库中没有对应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException * */ @Test public void get() { User user = session.get(User.class, "402881e85d73d332015d73d335e80000"); User user1 = session.load(User.class, "402881e85d73d332015d73d335e80000"); System.out.println(user); System.out.println(user1); // user1 的不会有执行语句, 因为两个方法获取的是同一对象, load 不会去查数据库 // 而是会去查缓存 session 是一级缓存 }
阅读全文
0 0
- hibernate 5.2.10 的使用
- Hibernate Synchronizer的使用
- hibernate Session的使用
- Hibernate的使用
- 使用hibernate的问题
- hibernate的使用
- hibernate tools的使用
- hibernate的lazy使用
- Hibernate缓存的使用
- hibernate tools的使用
- hibernate criteria的使用
- Hibernate @Temporal的使用
- Hibernate的使用
- Hibernate的使用
- Hibernate的简单使用
- hibernate Criteria 的使用
- hibernate的缓存使用
- hibernate 缓存的使用
- matlab 正弦波
- js 实现一个简单的3D轮播效果
- 贝尔的面试题:你认为效率最高的方法,实现从1加到100
- Tomcat项目部署方式
- 巧解容斥
- hibernate 5.2.10 的使用
- 【期望】acm题目
- Tomcat部署Web项目
- SSH免密登录
- 开始TensorFlow学习
- HDU 2017 多校联赛2 1003 Maximum Sequence
- iOS中tableView组头部和尾部标题设置
- WPF 毛玻璃效果(转载)
- get/post 以及幂等性