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;}}
测试类TestPerson
package 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);}}
Atas ialah kandungan terperinci 使用hibernate实现对person数据表的操作. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Dreamweaver CS6
Alat pembangunan web visual