您好,欢迎访问一九零五行业门户网

使用hibernate实现对person数据表的操作

hibernate是一个开源的orm框架,顾名思义,它的核心思想即orm(object relational mapping,对象关系映射),可以通过对象来操作数据库中的信息,据说开发者一开始是不太熟悉数据库sql语句的,这也造就了hibernate的强大之处,它不强求开发者熟悉sql语句也可以操作数据库,hibernate可以自动生成sql语句,自动执行。
利用hibernate可以让开发者完全使用面想对象思维来操作数据库,所以接下来的演示不会有一句sql语句,如果有的话,请当我这句话没说!
本文使用hibernate实现了简单的对一个person数据表的基本增删改查操作。
准备工作环境:win7+eclipse
工具包:hibernate包,可前往下载,本例中使用的是4版本;
数据库连接驱动包,本例中使用的是mysql的 
程序结构图示
pojo层实体类package demo.pojo; public class person {private integer id;private string name;private string gender;private integer age;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 getgender() {return gender;}public void setgender(string gender) {this.gender = gender;}public integer getage() {return age;}public void setage(integer age) {this.age = age;}@overridepublic string tostring() {return "person [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + "]";}}
核心配置文件hibernate.cfg.xml<?xml version="1.0" encoding="utf-8"?> <!doctype hibernate-configuration public "-//hibernate/hibernate configuration dtd 3.0//en" "www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 以下四行分别为:数据库驱动类、drivermanager获取连接的参数url、用户名、密码 --> <property name="connection.driver_class">com.mysql.jdbc.driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1/web?characterecoding=utf-8</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <!-- 设置方言,hibernate会根据数据库的类型相应生成sql语句 --> <property name="dialect">org.hibernate.dialect.mysqldialect</property> <!-- 控制台显示生成的sql语句,默认为false --> <property name="show_sql">true</property> <!-- 映射配置源文件的位置 --> <mapping resource="demo/pojo/person.hbm.xml"/> </session-factory> </hibernate-configuration>
映射文件person.hbm.xml<?xml version="1.0" encoding="utf-8"?> <!doctype hibernate-mapping public "-//hibernate/hibernate mapping dtd 3.0//en" "www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- name是实体类全名,table为数据表名 --> <class name="demo.pojo.person" table="person"> <id name="id" column="id"> <!-- 主键生成方式,native是让hibernate自动识别 --> <generator class="native"></generator> </id> <!--
注意点:
0.name值为实体类中属性名,column为数据表中字段名;
1.当实体类中属性名与对应数据表字段名相同时,后面的column可以省略,hibernate会自动匹配,例如下面age ;
2.反之当实体类中属性名与对应数据表字段名不相同时,两项都要写上,例如下面gender和sex
-->
<property name="name" column="name"></property> <property name="gender" column="sex"></property> <property name="age"></property> </class> </hibernate-mapping>
session工厂类package demo.util; 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 hibernatesessionfactory {private static sessionfactory factory;private static threadlocal<session> thread = new threadlocal<session>();private static string path = "hibernate.cfg.xml";private static configuration config = new configuration();static {config.configure(path);serviceregistry service = new serviceregistrybuilder()//定义一个服务注册机.applysettings(config.getproperties()).buildserviceregistry();factory = config.buildsessionfactory(service);//创建session工厂类}/** * 从hibernate的session工厂类里创建一个session * @return * */public static session getsession() {session session = thread.get();if(session == null || !session.isopen()) {session = factory.opensession();thread.set(session);}return session;}public static void closesession() {session session = thread.get();if(session != null && session.isopen()) {session.close();thread.set(null);}}}
dao层封装数据各项操作的方法package demo.dao; import java.io.serializable;import org.hibernate.session;import org.hibernate.transaction;import demo.pojo.person;import demo.util.hibernatesessionfactory; public class persondaoimpl {//增删改查,此处以增为例public boolean add(person p) {session session = hibernatesessionfactory.getsession();//创建sessiontransaction trans = session.begintransaction();//开启事务try {serializable id = session.save(p);//添加记录并获取主键值system.out.println(id+"为获取的主键值");//控制台查看主键值trans.commit();//提交事务return true;} catch (exception e) {trans.rollback();//获取异常,则事务回滚} finally {hibernatesessionfactory.closesession();//关闭session}return false;}}
测试类testpersonpackage demo.test; import org.junit.test;import demo.dao.persondaoimpl;import demo.pojo.person; public class testperson {@testpublic void testadd() {//创建一个人类对象person p = new person();p.setname("张三");p.setgender("男");p.setage(18);//创建dao层类对象并调用添加方法persondaoimpl dao = new persondaoimpl();dao.add(p);}}
以上就是使用hibernate实现对person数据表的操作的详细内容。
其它类似信息

推荐信息