hibernate配置
1:hibernate.cfg.xml是Java类连接数据库的映射文件;
2:hibernate属性
(1)hibernate.dialect :这个属性使 Hibernate 应用为被选择的数据库生成适当的 SQL。
(2)hibernate.connection.driver_class:JDBC 驱动程序类。
(3)hibernate.connection.url :数据库实例的 JDBC URL。
(4)hibernate.connection.username:数据库用户名
(5)hibernate.connection.password:数据库登录密码
(6)hibernate.connection.pool_size :限制在 Hibernate 应用数据库连接池中连接的数量。
//以下property中的配置为hibernate的必选配置
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
引入orm映射文件例如:
<mapping resource="com/zhiyou100/hibernate/model/Account.hbm.xml"/>
<mapping resource="com/zhiyou100/hibernate/model/Speaker.hbm.xml"/>
<mapping resource="com/zhiyou100/hibernate/model/Video.hbm.xml"/>
(7)Session 的主要功能是为映射实体类的实例提供创建,读取和删除操作。这些实例可能在给定时间点时存在于以下三种状态之一:
- 瞬时状态: 一种新的持久性实例,被 Hibernate 认为是瞬时的,它不与 Session 相关联,在数据库中没有与之关联的记录且无标识符值(OID)。(不关联session并且无OID)
- 持久状态:可以将一个瞬时状态实例通过与一个 Session 关联的方式将其转化为持久状态实例。持久状态实例在数据库中没有与之关联的记录,有标识符值,并与一个 Session 关联。(关联session有OID)
- 托管状态(游离状态):一旦关闭 Hibernate Session,持久状态实例将会成为托管状态实例。(不关联session有OID)
若 Session 实例的持久态类别是序列化的,则该 Session 实例是序列化的。一个典型的事务应该使用以下语法:
3:session接口提供的方法
Session session = HibernateUtil.getSession();
//session接口提供的方法:开始工作单位并返回关联事务对象
Transaction beginTransaction = session.beginTransaction();
//取消当前的查询执行
session.cancelQuery();
//完全清除该会话
session.clear();
//通过释放和清理JDBC连接以结束该会话
session.close();
//为给定的实体类或者是实体类的超类创建一个新的Criteria实例
session.createCriteria(Account.class);
//为给定的实体类名称创建一个新的criteria实例
session.createCriteria("account");
//为给定的HQL查询字符创建查询的新实例
session.createQuery("select * from acount");
//为给定的SQL查询字符串创建查询SQLQuery的新实例
session.createSQLQuery("select * from acount");
//从数据储存中删除持久化实例
session.delete("select * from acount");
//获取创建还会话的session工厂
SessionFactory sessionFactory = session.getSessionFactory();
//从数据库中重新读取给定实例的状态
session.refresh(as);
//获取与该session关联的事物实例
Transaction transaction = session.getTransaction();
//检查数据库是否连接
session.isConnected();
//检查数据库是否仍处于开启状态
session.isOpen();
//先分配一个生成的标识,以保证给定的瞬时状态实例
Serializable serializable = session.save(account);
//保存或更新给定的实例
session.saveOrUpdate(account);
//更新带有标识符且是给定的处于托管状态的
session.update(account);
//更新带有标识符且是给定的处于托管状态实例的持久化实例
session.update("select * from acount", account);
4:hibernate持久化类
hibernate的完整概念就是提取Java类中的属性值,并将其保存到数据库的表单当中,映射文件能够帮助hibernate确定如何从该类中取值,并将它们映射在表格和相关域中。
持久化类:其对象或实例被储存到数据表单中的Java类被称为持久化类;
持久化类的主要规则(但都不是硬性要求)有:
(1)所有将被持久化的Java类都需要一个默认的构造函数
(2)为了使对象能够在hibernate和数据库中能够被识别,每个类都要包含一个id,此属性映射到数据表中的主键列;
(3)所有将被持久化的属性都应该声明是private,并具有get和set方法;
(4)hibernate一个重要的特征是代理,它取决于该持久化类是处于非final,还是一个所有方法都声明为public的接口
(5)所有的类是不可扩展或者按EJB要求实现的一些特殊的类和接口;
(EJB:简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。)