Hibernate3.2(1) : 利用Hibernate框架往数据库表里写一条数据

Hibernate3.2(1) : 利用Hibernate框架往数据库表里写一条数据_第1张图片

我们首先下载好Hibernate3.2的包,然后将根目录下的hibernate3.jar核心包lib目录下的所有依赖jar包添加到工程的lib目录下,再加上mysql的驱动包。

script.sql :

create database temp;
use temp;
create table users(
id int primary key auto_increment,
name varchar(10),
age int,
married varchar(2));
hibernate.cfg.xml :

<!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.url">jdbc:mysql://localhost:3306/temp</property>
       <property name="connection.username">root</property>
       <property name="connection.password">mysqladmin</property>
       <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
       <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
       <property name="show_sql">true</property>
       <property name="format_sql">true</property>
       <mapping resource="db/mapping/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
注意此文件的DOCTYPE可以到hibernate分发包的etc目录下hibernate.cfg.xml文件中拷贝。属性dialect表示方言,其值可以到hibernate3.jar下的org.hibernate.dialect包中去找对应的数据库方言。这里我使用的数据库是mysql5,所以选择了MySQL5Dialect。

User.hbm.xml :

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping package="db.domain">
    <class name="User" table="users">
        <id name="id" type="integer">
            <generator class="native"></generator>
        </id>
        <property name="name" type="string">
            <column name="name"></column>
        </property>
        <property name="age" type="integer">
            <column name="age"></column>
        </property>
        <property name="married" type="yes_no">
            <column name="married"></column>
        </property>
    </class>
</hibernate-mapping>
注意这个Java类的映射数据库文件的DOCTYPE可以到hibernate分发包的test目录中搜索hbm.xml,在结果中随便找一个文件打开,将其DOCTYPE拷贝出来。这个文件中, class表示要映射数据库表的类, name属性表示类名, table属性表示数据库中对应的表。 propertyname属性表示Java类的属性名, type表示数据类型,这里采用的是hibernate框架的数据类型, column表示映射到数据库表中的某个字段名。需要注意的是married,Java类中的married是 布尔类型,hibernate可以采用 yes_no映射,写进数据库表的时候,true表示为Y,false表示为N。

User.java :

public class User {
	
	private int id;
	private String name;
	private int age;
	private boolean married;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public boolean isMarried() {
		return married;
	}
	public void setMarried(boolean married) {
		this.married = married;
	}
	
}
UserDAO.java :

public class UserDAO {

	public void add(User user){
		Configuration conf=new Configuration();
		conf.configure();//加载hibernate.cfg.xml配置文件
		SessionFactory sf=conf.buildSessionFactory();//获取SessionFactory实例
		Session session=sf.openSession();
		Transaction txt=session.beginTransaction();
		session.save(user);
		txt.commit();//提交事务
		session.close();
	}
}
TestDAO.java :

public class TestDAO {

	public static void main(String[] args) {
		UserDAO dao=new UserDAO();
		User user=new User();
		user.setName("tom");
		user.setAge(20);
		user.setMarried(false);
		dao.add(user);
	}

}

运行TestDAO.java,控制台输出:

Hibernate3.2(1) : 利用Hibernate框架往数据库表里写一条数据_第2张图片

可以看出hibernate底层采用的仍然是SQL语句。

查看数据库中的表:

Hibernate3.2(1) : 利用Hibernate框架往数据库表里写一条数据_第3张图片

可以看出数据已经写入数据库的users表中。

整个过程中,虽然我们操作的是User对象,但数据依然可以写进关系型数据库的表中,这样就实现了从始至终的面向对象编程。




你可能感兴趣的:(Hibernate)