hibernate
霖你唔到
Stay hungry Stay foolish
展开
-
Hibernate的概述
Hibernate的概述什么是HibernateHibernate是一个基于ORM的持久层的框架这句话有两个概念:ORM和持久层框架持久层框架:意味着,这个框架就是对数据库进行增删改查的。ORM:(Object Relational Mapping)对象关系映射。在访问数据库前,将实体类的类和数据库表的表关联起来。通过操作实体类的对象,直接由框架生成操作数据库的SQ...原创 2018-05-12 22:49:47 · 216 阅读 · 0 评论 -
Hibernate的多对多关系查询
Hibernate的多对多关系查询多对多的条件 需求:通过ID查询用户的信息,同时查询用户对应的角色的信息。(先查询本表需要查询的id的信息) select * from sys_user u where u.user_id=5; 用户对应的角色的信息。(通过查询出来的外键字段去中间表查询对应的外键)注意:用户和角色的关系是多对多的关系,他们的关系是在中间表里面的 se...原创 2018-05-14 00:55:57 · 1825 阅读 · 0 评论 -
Hibernate的多对一的关系查询
Hibernate的多对一的关系查询配置步骤1.创建一个可以存储多个表数据的实体类,多对一的关系//联系人和客户是多对一的关系,意味着一个联系人对应一个客户//所以,一个联系人里面只有一个可以存储一个客户数据的属性就可以了。//所以使用Customer的引用private Customer customer;public Customer getCustomer() ...原创 2018-05-14 00:54:50 · 989 阅读 · 1 评论 -
Hibernate的一对多的关系查询
Hibernate的一对多的关系查询不管一对多还是多对一,在另一个实体类中声明一个实体类对象属性来封装数据,将查询的多个表的数据封装这个实体类的对象里面,通过配置来说实现。配置的步骤创建一个可以存储多个表数据的实体类,实体类根据数据库的关系建立映射关系在Customer的实体类中添加多一个属性//将外表的查询数据封装到一个实体类中,然后用一个集合来封装priv...原创 2018-05-14 00:54:04 · 2141 阅读 · 0 评论 -
Hibernate使用JDBC
Hibernate使用JDBC使用JDBC操作调用session.doWork()方法重写Work接口的方法@Testpublic void findALLByJDBC(){ //1.获得操作对象 Session session = HibernateUtils.getSession(); session.doWork(new Work() { ...原创 2018-05-14 00:52:52 · 1441 阅读 · 0 评论 -
Hibernate支持SQL
Hibernate支持SQL作者的意思,如果可以使用Criteria和HQL可以解决的问题,建议不要使用SQL操作。但是有一些复杂的需求。真的使用HQL实现不了。那么可以使用SQL。获得HQL的操作接口 Session.createSQLQuery()使用SQL需要手动关联 query.addEntity(Customer.class);//1.查询所有的数据@Test...原创 2018-05-13 08:23:23 · 2063 阅读 · 1 评论 -
Hibernate的操作
Hibernate的操作注意:HQL是没有插入语法的,原因插入数据不需条件判断,所以Hibernate就没有实现HQL插入的语法。所以HQL操作数据库的语法是更新和删除使用HQL更新和删除数据,可以不依赖OID。可以实现通过其它的属性操作。//删除,通过客户名字删除@Testpublic void delete(){ //1.获得操作对象 Session s...原创 2018-05-13 08:23:00 · 153 阅读 · 0 评论 -
Hibernate的投影查询
Hibernate的投影查询当查询的记录不是所有字段,而是指定的字段。 如果需要使用一个实体类接收。那么需要一个有参数的构造方法。我们将这种,有构造方法参数的查询,称为投影查询。比如:session.createQuery(select new Customer(c.custName,c.custSource) from Customer c);如果不使用投影查询返回...原创 2018-05-13 08:22:39 · 931 阅读 · 0 评论 -
Hibernate的HQL查询
Hibernate的HQL查询HQL是什么Hibernate Query Language(Hibernate查询语言)。 就是一套类似SQL的语言,但是操作的是持久化对象。是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和 关联之类的概念注意:使用hql操作数据库表的好处。不同的关系型数据库使用的hql的语法是相同的。语句书写SQL语句:selec...原创 2018-05-13 08:22:04 · 307 阅读 · 0 评论 -
Hibernate的Criteria查询
Hibernate的Criteria查询标准查询API(QBC: Query By Criteria):标准查询API所谓的Criteria,就是完全是Java代码查询数据库。不用写SQL。条件查询QBC限制条件的说明 短语 含义 Restrictions.eq 等于= Restrictions.allEq 使用Map,使用key/v...原创 2018-05-13 08:21:35 · 321 阅读 · 0 评论 -
Hibernate的线程
Hibernate的线程前提:由于后面学习的整合框架spring,是不能使用new 对象。所以不能使用构造函数传递session给DAO想法:我们希望在DAO里面获得的Session对象和外层获得的Session的是同一个对象。不使用参数从外层调用方传递到DAO。如何实现外层的session和DAO的session是同一个对象?答:可以使用线程绑定。意思就是同一条线程的sessio...原创 2018-05-13 08:21:04 · 600 阅读 · 0 评论 -
Hibernate的快照
Hibernate的快照作用:提高效率手段2:减少不必要的修改语句发送当实体对象变成持久态对象的时候,和数据库表关联后。在session中会保存两份数据的副本。 一份是缓存,一个是快照。缓存的作用:用于提高查询的效率快照的作用:用于更新数据,作对比使用。快照的支持就是持久态对象直接可以通过直接修改属性值更数据库表的数据,不需要update方法。public ...原创 2018-05-13 08:20:28 · 681 阅读 · 0 评论 -
Hibernate的一级缓存
Hibernate的一级缓存HIbernate是支持一级缓存。所谓的一级缓存就是Session级别的缓存。意思就是说,同一个session查询同样的数据,只查询一次数据库。如果出现同多次同样的查询(get/load) 直接返回缓存的数据。作用:缓存的作用:就是减少查询的次数,从而提高查询的效率!!!!默认情况就支持一级缓存如果支持缓存,get四次数据库,只查一次。...原创 2018-05-13 08:19:56 · 204 阅读 · 0 评论 -
hibernate的三种状态
hibernate的三种状态实体类(持久化类)对象是有状态的。为什么实体类对象会有状态?答:由于HIbernate框架是一个先映射,后操作的框架。所谓的状态就是实体类的对象和数据库是否有关联的情况。Hibernate的持久化类有三种状态:瞬时态(自由态):与数据库的表没有任何关联关系的实体对象。不存在持久化标识OID(相当于主键),尚未与Hibernate Se...原创 2018-05-13 08:19:26 · 202 阅读 · 0 评论 -
主键生成策略
主键生成策略所谓的主键生成策略,就是Hibernate提供了多种生成主键值的方法。常用的Hibernate的主键生成策略incrementincrement策略是指,不使用数据库本地的自增长策略,而是由程序(Hibernate框架)产生一个自增长的ID值,赋予数据库.每次插入前都会去查询表中id最大的值,然后+1作为新主键hilo(了解)高低位算法,主键自增,由hib...原创 2018-05-13 08:18:40 · 4835 阅读 · 0 评论 -
Hibernate常用的API
Hibernate常用的APIConfiguration:配置类 作用:用于获得框架的信息,构建将会话工厂。获得默认的配置文件//1.创建一个Configuration的对象Configuration config=new Configuration();//2.读取默认路径下的hibernate.cfg.xml配置文件config.configure();获得指定文件名...原创 2018-05-12 22:51:39 · 203 阅读 · 0 评论 -
hibernate的get和load方法的区别
get和load方法的区别返回的数据由于get方法是无延迟的,所以查不到数据直接返回nullload是有延迟,基于延迟的机制,如果找不到数据就报异常访问数据库时机由于get方法是无延迟的,查询的时候数据已经在对象里面,所以关闭session,数据依然可以使用load是有延迟,意味着在对象的时候才去查询数据库。导致在使用对象前关闭数据库,报错。load方法可以通过在mappin...原创 2018-05-12 22:50:28 · 202 阅读 · 0 评论 -
Hibernate的级联操作
Hibernate的级联操作所谓的级联操作,Hibernate支持根据配置的关联关系,实现通过一个实体类的对象,可以操作多个表的数据。(操作:增删改)。我们将这个现象称为级联操作。配置级联操作的属性: - cascade用于启动级联操作 - save-update:启动级联保存和更新 - detele:启动级联删除级联增加配置步骤: 1. 配置关联关系支...原创 2018-05-14 00:56:41 · 1419 阅读 · 0 评论