您的位置:首页 > 数据库

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

2013-07-06 01:49 471 查看


我们首先下载好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,控制台输出:



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

查看数据库中的表:



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

整个过程中,虽然我们操作的是User对象,但数据依然可以写进关系型数据库的表中,这样就实现了从始至终的面向对象编程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐