Hibernate

1:加入Hibernate的jar包和数据库的驱动包

 

2:创建Hiberante的配置文件

<?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.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=hibernate</property>
        <property name="connection.username">zhangsan</property>
        <property name="connection.password">123456</property>
        <!--配置数据库的方言 -->
        <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
        <!--是否显示SQL语句 -->
        <property name="show_sql">true</property>
        <!--是否格式化SQL语句 -->
        <property name="format_sql">true</property>
        <!--数据库中表的创建方法 -->
        <property name="hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

3,创建持久化类:

package org.wangyi.com;

import java.util.Date;

/**
 * 
 * @author wangyi
 *@version 1.0
 */
public class News {
    private Integer id;//消息id
    private String title;//消息标题
    private String auth;//消息作者
    private Date date;//消息日期
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getAuth() {
        return auth;
    }
    public void setAuth(String auth) {
        this.auth = auth;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    
    

}

创建持久化类时,注意一下的几点:

实现一个默认的(即无参数的)构造方法(constructor)

 提供一个标识属性(identifier property)

News有一个属性叫做id。这个属性映射数据库表的主 键字段。
这个属性可以叫任何名字,其类型可以是任何的原始类型、原始类型的包装类型、 java.lang.String 或者是 java.util.Date。 (
如果你的遗留数据库表有联合主键,你甚至可以用一个用户自定义的类,该类拥有这些类型 的属性。

 使用非final的类 

代理(proxies)是Hibernate的一个重要的功能,它依赖的条件是,持久 化类或者是非final的,或者是实现了一个所有方法都声明为public的接口。

你可以用Hibernate持久化一个没有实现任何接口的final类,但是你 不能使用代理来延迟关联加载,这会限制你进行性能优化的选择。

你也应该避免在非final类中声明 public final的方法。如果你想使用一 个有public final方法的类,你必须通过设置lazy="false" 来明确地禁用代理

 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)

News为它的所有持久化字段声明了访问方法。很多其他ORM工具直接对 实例变量进行持久化。我们相信,在关系数据库schema和类的内部数据结构之间引入间接层(原文为"非直接",indirection)会好一些。默认情况下Hibernate持久化JavaBeans风格的属性

4: 创建对象-关系映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-2-20 10:14:10 by Hibernate Tools 3.4.0.CR1 -->
<!--package : 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。 -->
<hibernate-mapping package="org.wangyi.com">
    <!-- name : 持久化类的Java全限定名。 table : 对应的数据库表名。 -->
    <class name="News" table="NEWS">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <!--generator元素表明了数据库中的主键生成方法 -->
            <generator class="native" />
        </id>
        <!-- property元素为类定义了一个持久化的的属性 name: 属性的名字,以小写字母开头。 column : 对应的数据库字段名。 
            type : 一个Hibernate类型的名字。 -->
        <property name="title" type="java.lang.String">
            <column name="TITLE" />
        </property>
        <property name="auth" type="java.lang.String">
            <column name="AUTH" />
        </property>
        <property name="date" type="java.util.Date">
            <column name="DATE" />
        </property>
    </class>
</hibernate-mapping>

5:在hibernte.cfg.xml配置文件中加载映射文件

 

6:通过Hibernate API编写访问数据库的代码:

package org.wangyi.com;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class Test {
    public static void main(String[] args) {
        // 加载配置文件
        Configuration configuration = new Configuration()//
                .configure();// 加载类路径下默认的hibernate.cfg.xml文件
        // 注册服务(hibernate 4.x 后中加入的API)
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()//
                .applySettings(configuration.getProperties())//
                .buildServiceRegistry();//
        // hibernate 3.x 以前的方法
        // SessionFactory factory = configuration.buildSessionFactory();
        // 创建session会话的工厂
        SessionFactory factory = configuration
                .buildSessionFactory(serviceRegistry);
        // 创建session
        Session session = factory.openSession();
        // 开启事务
        session.beginTransaction();
        // 执行数据库的操作
        News news = new News();
        news.setAuth("AA");
        news.setDate(new Date());
        news.setTitle("aa");
        session.save(news);
        // 提交事务
        session.getTransaction().commit();
        // 关闭会话,释放资源
        session.close();
    }
}

结果:

 

posted @ 2017-02-20 10:50  田园慕歌_520  阅读(194)  评论(0编辑  收藏  举报