Hibernate从入门到上手(纯java project、Maven版本hibernate)
- Hibernate(orm框架)(开放源代码的对象关系映射框架)
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Orm:Object relational mapping,对象映射关系,用于对象与关系型数据库关联映射框架。
Demo1:纯java project
搭建步骤:
第一步:创建数据库表t_user,创建java对象USer.java
第二步:添加jar包
第三步:创建映射文件
第四步:创建hibernate核心配置文件hibernate.cfg.xml
第五步:测试
以下是详细步骤演示:
项目结构
第一步:创建数据库表t_user,创建java对象USer.java
#数据库表t_user
CREATE DATABASE hibernate_demo CHARSET 'UTF8'; CREATE TABLE t_use( id INT(10) PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL );
//创建java对象User.java
public class User { private Integer id; private String uname; //getter和setter省略 ...... }
第二步:添加jar包
第三步:创建映射文件user.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!--package:java对象包路径 --> <hibernate-mapping package="com.jonychen.model"> <!-- 配置对象与table的关系 --> <class name="User" table="t_user"> <!-- 指定主键name:表示java对象属性名 column --> <id name="id" column="id" type="integer"> <!--配置主键自增策略 --> <generator class="native" /> </id> <!--配置其他属性与字段关联关系 --> <property name="uname" column="uname" type="string" /> </class> </hibernate-mapping>
第四步:hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--1、方言:指定数据库类型 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!--2、配置数据源 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate_demo</property> <property name="connection.username">root</property> <property name="connection.password">mysql</property> <!--打印sql --> <property name="show_sql">true</property> <!--3、加载映射文件 --> <mapping resource="com/jonychen/model/user.hbm.xml" /> </session-factory> </hibernate-configuration>
第五步,测试
1 package com.jonychen.test; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 7 import org.hibernate.cfg.Configuration; 8 import org.hibernate.service.ServiceRegistry; 9 10 import com.jonychen.model.User; 11 12 public class HibernateTest { 13 14 public static void main(String[] args) { 15 // TODO Auto-generated method stub 16 //1、加载配置文件 17 Configuration cfg=new Configuration(); 18 cfg.configure("hibernate.cfg.xml"); 19 20 21 //2、创建sessionFactory 22 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); 23 SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry); 24 25 //3、打开全新session 26 Session session=sessionFactory.openSession(); 27 28 try { 29 //事务 30 Transaction ts=session.beginTransaction(); 31 32 User user =new User(); 33 user.setUname("jonychen"); 34 //添加数据 35 session.save(user); 36 //提交事务 37 ts.commit(); 38 } catch (Exception e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 }finally { 42 //关闭连接 43 if(session!=null) { 44 session.close(); 45 } 46 if(sessionFactory!=null) { 47 sessionFactory.close(); 48 } 49 50 } 51 } 52 }
在Eclipse里添加插件开发Hibernate
Demo2 :Maven版本hibernate
项目结构:
maven项目中除了以上两个文件有变化,其他跟之前搭建的java project一样,以下是有变化的两段代码。
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.jonychen</groupId> 5 <artifactId>hibernate-demo-maven</artifactId> 6 <version>0.0.1-SNAPSHOT</version> 7 <dependencies> 8 <!--hibernate --> 9 <dependency> 10 <groupId>org.hibernate</groupId> 11 <artifactId>hibernate-core</artifactId> 12 <version>4.3.11.Final</version> 13 </dependency> 14 <!--MySQL数据库 --> 15 <dependency> 16 <groupId>mysql</groupId> 17 <artifactId>mysql-connector-java</artifactId> 18 <version>5.1.44</version> 19 </dependency> 20 <!--junit单元测试 --> 21 <dependency> 22 <groupId>junit</groupId> 23 <artifactId>junit</artifactId> 24 <version>4.12</version> 25 </dependency> 26 </dependencies> 27 <build> 28 <plugins> 29 <!-- 指定jdk版本 --> 30 <plugin> 31 <groupId>org.apache.maven.plugins</groupId> 32 <artifactId>maven-compiler-plugin</artifactId> 33 <version>3.7.0</version> 34 <configuration> 35 <source>1.8</source> 36 <target>1.8</target> 37 </configuration> 38 </plugin> 39 </plugins> 40 </build> 41 </project>
HibernateTest.java
1 package com.jonychen.test; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 7 import org.hibernate.cfg.Configuration; 8 import org.hibernate.service.ServiceRegistry; 9 import org.junit.After; 10 import org.junit.Before; 11 import org.junit.Test; 12 13 import com.jonychen.model.User; 14 15 16 public class HibernateTest { 17 18 SessionFactory sessionFactory=null; 19 Session session=null; 20 21 @Before 22 public void init() { 23 //1、加载配置文件 24 Configuration cfg=new Configuration(); 25 cfg.configure("hibernate.cfg.xml"); 26 27 28 //2、创建sessionFactory 29 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); 30 SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry); 31 32 //3、打开全新session 33 session=sessionFactory.openSession(); 34 } 35 36 @Test 37 public void testSave() { 38 //事务 39 Transaction ts=session.beginTransaction(); 40 41 User user =new User(); 42 user.setUname("jony.k.chen"); 43 //添加数据 44 session.save(user); 45 //提交事务 46 ts.commit(); 47 } 48 @After 49 public void destory() { 50 //关闭连接 51 if(session!=null) { 52 session.close(); 53 } 54 if(sessionFactory!=null) { 55 sessionFactory.close(); 56 } 57 } 58 }
友情提醒:
测试的时候如果报错org.hibernate.MappingException: Unknown entity,说明是版本问题,在pom.xml中调整版本号即可,亲测有效!
作 者:
Jony.K.Chen
出 处:http://www.cnblogs.com/lxcy/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!