二、Hibernate入门

一、获取Hibernate

hibernate最小jar包

antlr-2.7.6.jar、asm.jar、asm-attrs.jar、cglib-2.1.3.jar、commons-collections-2.1.1.jar

commons-logging-1.0.4.jar、dom4j-1.6.1.jar、ehcache-1.2.3.jar、hibernate3.jar、jta.jar、log4j-1.2.11.jar

二、Hibernate配置文件

Hibernate通过读取默认的XML配置文件hibernate.cfg.xml加载数据的配置信息,该配置文件被默认放于项目的classpath目录下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
     <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/db_database10</property>
        <property name="connection.username">root</property>
        <property name="connection.password">111</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <mapping resource="com/mr/employee/Employee.hbm.xml"/>
     </session-factory>
 </hibernate-configuration>

<property>元素的常用配置属性

方法                       说明

connection.driver_class    连接数据库的驱动

connection.url             数据库连接的URL

connection.username        数据库连接用户名

connection.password        数据库连接密码

dialect                    Hibernate方言

show_sql                   是否在控制台打印SQL语句

format_sql                 是否格式化SQL语句

hbm2ddl.auto               是否自动生成数据库表

 

三、了解并编写持久类

在hibernate中持久化类是Hibernate操作的对象,也就是通过对象-关系映射(ORM)后数据库表所映射的实体类,用来描述数据库表的结构信息。持久类中的属性应该与数据库表的字段相匹配。


public class User {
    private Integer id;
    private String name;
    private String password;
    public User(){}
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
   
}

 

Hibernate中的持久类有4条5编程规则,

(1)、实现一个默认的构造器

以便Hibernate通过Constructor.newInstance()实例化类

(2)、提供一个标识属性(可选)

标识属性一般映射的是数据库表中的这键字段

(3)、使用非final类(可选)

如果使用了final类,Hibernate就不能使用延迟加载

(4)、属性声明访问器(可选)

持久化类的属性不能声明为public的,最好以private的set()和get()方法对属性进行持久化

 

四、Hibernate映射

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 <!-- 产品信息字段配置信息 -->
 <hibernate-mapping>
     <class name="com.mr.User" table="tab_user">
         <!-- 持久化类的唯一性标识 -->
         <id name="id" column="id" type="int">
            <generator class="native"/>
        </id>
        <property name="name" type="string" not-null="true" length="50">
            <column name="name"/>
        </property>
        <property name="password" type="string" not-null="true" length="50">
            <column name="password"/>
        </property>
     </class>
 </hibernate-mapping>

 

持久化类映射文件<property>元素的常用配置属性

属性名称                   说明

name                       持久化类属性的名称,以小写字母开关

column                     数据库字段名

type                       数据库的字段类型

length                     数据库字段定义的长度

not-null                   该字段是否为空

unique                     该数据库字段是唯一

lazy                       是否延迟加载

 

五、hibernate主键策略

hibernate主键生成策略的常用配置属性

属性名称           说明

increment          用于为long、short或int类型生成唯一标识,在集群下不要使用该属性

identity           由底层数据库生成主键,前提是底层数据库支持自增字段类型

sequence           根据底层数据库的序列生成主键,前提是底层数据库支持序列

hilo               根据高/低算法生成,把特定表的字段作为高位值来源,在默认的情况下选用hibernate_unique_key表的next_hi字段

assigned           由程序负责主键生成,此时持久类的唯一标识不能声明为private

select             通过数据库触发器生成主键

foreign            使用另一个相关的对象的标识符,通常和<ono-to-one>一起使用。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值