Hibernate从入门到上手(纯java project、Maven版本hibernate)
- Hibernate(orm框架)(开放源代码的对象关系映射框架)
Orm:Object relational mapping,对象映射关系,用于对象与关系型数据库关联映射框架。
Demo1:纯java project
搭建步骤:
第一步:创建数据库表t_user,创建java对象USer.java
第二步:添加jar包
第三步:创建映射文件
第四步:创建hibernate核心配置文件hibernate.cfg.xml
第五步:测试
以下是详细步骤演示:
项目结构
第一步:创建数据库表t_user,创建java对象USer.java
1 2 3 4 5 6 | <strong>#数据库表t_user</strong><br> CREATE DATABASE hibernate_demo CHARSET 'UTF8' ; CREATE TABLE t_use( id INT (10) PRIMARY KEY AUTO_INCREMENT, uname VARCHAR (20) NOT NULL ); |
1 2 3 4 5 6 | //<strong>创建java对象User.java</strong><br>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/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析