day24 ORM Hibernate常用的接口和类(Configuration, SessionFactory , Session, Transaction ,Query) hql

来源:互联网 发布:单片机与fpga 编辑:程序博客网 时间:2024/05/19 18:14

开源框架:open Source(开放源代码)
 addUser(User user)
 addObject(Object object)
 Person
 Teacher
 把通用的方式以project形式发布。
 个人或者是基金组织(apache)
 可以修改源代码
规范:行业标准 SUN  不能修改 接口
持久化
 Persistence 
 Relational DataBase
 SQL
    DDL DML
 JDBC
ORM(Object Relational Mapping)
  描述:java应用程序中持久化对象到关系数据库表之间的映射。
 映射原则:
 User                                Prefix_user
 实体名 ==============表明
 属性================列
 关系===============外键
 继承映射
Why ORM?
 1:生产力
 2:维护性
 3:执行
 4:和数据库无关
ORM产品:
 1:Hibernate:全自动|自动生成sql|
 2:ibatis:半自动|要我们自己写sql|灵活
 3:JPA Java Persistence api(规范 SUN)
   
 java=========jdbc==========db
 java========HIbernate ====db 
 java======ibatis======db
                   jdbc
 java======jpa    hibernate  db
     ibaits
     
 User    介质  prefix_user
 id 1 id=user  user 1
 name icexu name=username username icexu
 password 7474  password=pwd pwd     7474

 hbm.xml:描述实体到数据库表的具体映射
 cfg.xml:描述的数据库信息
 
Hibernate常用的接口和类
 1>Configuration
 概述:Configuration 类负责管理Hibernate 的配置信息。它包括如下内容:
 Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。
 Hibernate映射文件(*.hbm.xml)。

 Hibernate配置的两种方法:
 属性文件(hibernate.properties)。
 调用代码:Configuration cfg = new Configuration();
 Xml文件(hibernate.cfg.xml)。
 调用代码:Configuration cfg = new Configuration().configure();
2>SessionFactory
 概述:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。
      会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。

 调用代码:
 SessionFactory sessionFactory = cfg.buildSessionFactory();
3>Session:
概述:
 Session不是线程安全的,它代表与数据库之间的一次操作,它的概念介于Connection和Transaction之间。
  Session也称为持久化管理器,因为它是与持久化有关的操作接口。
  Session通过SessionFactory打开,在所有的工作完成后,需要关闭。
 它与Web层的HttpSession没有任何关系。

 调用代码
 Session session = sessionFactory.openSession();
4>Transaction:
概述:
       它将应用代码从底层的事务实现中抽象出来——这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)——允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。
 调用代码:
     Transaction tx = session.beginTransaction();

 注:使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)。
5>Query:
 概述:
  Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。

  调用代码:
  Query query = session.createQuery(“from User”);

Hibernate对JavaBean要求:
 1:唯一标识
 2:get|set方法
 3:无参数构造函数
 4:集合类型必须申明为接口类型
开发步骤:
 1:建立工程java
 2:导入jar文件
 3:写实体和接口
 4:配置xml文件
 5:获得sessionfactory
 6:获得session 
 7:开始事务
 8:do some work
 9:提交事务
 10:回滚事务
 11:关闭资源
Hirbenate底层调用jdbc

 sql :select * from prefix_student where id=?
 hql: from Student student where student.id=:id