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属性表示数据库中对应的表。property的name属性表示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对象,但数据依然可以写进关系型数据库的表中,这样就实现了从始至终的面向对象编程。
相关文章推荐
- 在Java的Hibernate框架中对数据库数据进行查询操作
- SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- 在Java的Hibernate框架中对数据库数据进行查询操作
- 在Java的Hibernate框架中对数据库数据进行查询操作
- Hibernate框架利用sessionFactory保存数据的两种方式
- 【原创】SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- ssm框架,往数据库插入一条数据,返回插入数据的id
- 遇见了奇怪bug,前端用的AngularJs,后台是SpringMVC,持久用的hibernate,跟后台断点时查询数据库返回一条数据,否则返回两条,以下是问题详述
- object对象java 利用反射 从数据库取出数据对象list 类似hibernate
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- db数据库利用第三方框架进行提取和解析数据
- 一条sql语句(关于将一个表里的数据汇总,更新数据库中的另外一张表的列值
- Hibernate中利用Criteria进行数据库表数据的增加查询。
- 利用hibernate框架工具生成数据表
- java 利用反射 从数据库取出数据对象list 类似hibernate
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- 数据库_MySQL_利用 存储过程 对 数据表 中的 每一条记录 进行业务处理
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- hibernate学习过程问题(1)--通过代码保存数据时,数据库始终只有一条数据
- hibernate之利用配置文件和annotation往数据库里插入数据