Hibernate使用注解进行ORM映射实例
在上一篇博客中,我们通过xml配置文件进行实体类和表的映射,但是近两年来有更多的项目对一些比较稳定的实体类使用了注解进行ORM映射,这样使得编程更加简洁、简单。其实使用注解进行ORM映射和使用xml进行映射没有太多的操作流程上的变化,主要步骤为:导包、编写带注解的实体类、编写核心配置文件、编写测试类。
项目工程代码已经上传到GitHub:https://github.com/wanyouxian/Hibernate 工程名:HibernateUseAnnotation
整个工程项目结构如下图:

一、导包
笔者使用的是MySQL数据库,因此导入数据包如下图:

二、编写实体类
用于映射的注解基本都在javax.persistence.*包中定义,我常用到的主要是如下四个:
package com.rocky.domain; import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name = "tb_user")
public class User
{
@Id
private Integer uId;
private String uName;
private Integer uAge;
public User()
{
super();
}
@Override
public String toString()
{
return "User [uId=" + uId + ", uName=" + uName + ", uAge=" + uAge + "]";
}
public Integer getuId()
{
return uId;
}
public void setuId(Integer uId)
{
this.uId = uId;
}
public String getuName()
{
return uName;
}
public void setuName(String uName)
{
this.uName = uName;
}
public Integer getuAge()
{
return uAge;
}
public void setuAge(Integer uAge)
{
this.uAge = uAge;
}
}
三、编写核心配置文件
使用注解的配置文件和xml映射的配置文件基本大同小异,但是在引入外部映射时使用的属性是class而非resource属性。
<?xml version='1.0' encoding='UTF-8'?>
<!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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://192.168.100.100:3306/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1</property> <!--指定hibernate是否显式SQL语句及其格式化 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property> <!--指定表的生成方式-即是否由hibernate自动创建表,其取值为:create-drop、
create、validate、update-->
<property name="hibernate.hbm2ddl.auto">update</property> <!--引入 ORM配置文件 -->
<mapping class="com.rocky.domain.User"/>
</session-factory> </hibernate-configuration>
四、编写测试类
package com.rocky.testdriver; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.rocky.domain.User; public class TestDriver
{ public static void main(String[] args)
{
// 加载配置文件
Configuration cfg = new Configuration();
cfg.configure();
// 创建会话工厂
SessionFactory factory = cfg.buildSessionFactory();
// 获取非线程绑定会话
Session session = factory.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
// 创建User对象
User user = new User();
user.setuId(1);
user.setuName("rocky");
user.setuAge(28); // 将数据插入数据库
session.save(user); // 提交事务
tx.commit();
// 关闭会话
session.close();
} }
Hibernate使用注解进行ORM映射实例的更多相关文章
- C#根据反射和特性实现ORM映射实例分析
本文实例讲述了C#根据反射和特性实现ORM 映射的方法.分享给大家供大家参考.具体如下: (一)关于反射 什么是反射? 反射就是在运行时,动态获取对象信息的方法.比如:运行时获得对象有哪些属性,方法, ...
- Hibernate(四)基本映射
映射的概念 在上次的博文Hibernate(三)Hibernate 配置文件我们已经讲解了一下 Hibernate中的两种配置文件,其中提到了两种配置文件的主要区别就是XML可以配置映射.这里提到的映 ...
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现
1.同一个数据库实例.同用户,多表创建视图 2.同一个数据库实例,不同用户下.多表创建视图 3.同一个数据库,不同数据库实例,多表创建视图 4.不同类型数据库,多表创建视图 1.同一个数据库实例.同用 ...
- Hibernate用注解实现实体类和表的映射
数据库mysql: 1.一对一 person50表password50表是一对一的关系: password50表中有外键 person_id person实体类: package com.c50.en ...
- Java 自定义注解实现ORM对象关系映射
一,ORM概念 ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关 ...
- hibernate通过注解实现实体和表的映射
参考: 表名的映射: //代表此类参与ORM映射,此注解必须要有 @Entity //代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略 @Table(name=" ...
- hibernate annotation注解方式来处理映射关系
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...
- 【hibernate 初探】之 关系映射,ORM
从整理上讲,一个ORM框架(以hibernate为例)所涉及内容无非就是,如何映射,如何检索,还有事务处理.所以从这三方面入手,基本上可以保证将hibernate可以用到自己的项目之中.所以我先说一下 ...
- hibernate基于注解的维护权反转:@OneToMany(mappedBy=)
背景说明:首先是SSH环境下,对象基于注解的方式映射到数据库: 昨天遇到一个比较纠结的问题,@OneToMany(mappedBy="xxx"), mappedBy属性有什么用,然 ...
随机推荐
- PHP 工厂模式 实例讲解
简单工厂模式:①抽象基类:类中定义抽象一些方法,用以在子类中实现②继承自抽象基类的子类:实现基类中的抽象方法③工厂类:用以实例化对象 看完文章再回头来看下这张图,效果会比较好 1 采用封装方式 2 3 ...
- 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据
12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...
- 【WPF】如何获取命令行参数
应用程序以 Main 方法为入口点,如果为 Main 方法指定一个 string[] 类型的参数,在程序运行时,这个参数会获取到传递给应用程序的命令行参数. 而 WPF 应用程序比较特殊,因为在VS中 ...
- JavaSE教程-04Java中循环语句for,while,do···while-练习
0.实现打印50遍的"我爱你" 1.请在控制台输出数据1-10 2.请在控制台输出数据10-1 3.求出1-10之间数据之和 4.求出1-100之间能够被3整除的所有数的和 前四题 ...
- css的定位,relative/absolute/fixed的用法
其实position的值有四个,static/relative/absolute/fixed,而static是默认值,不算具有有定位属性,这里就不讲了. 定位其实就是跟元素设置定位属性,然后设置其对位 ...
- Canvas学习系列二:Canvas的坐标系统
上一章内容中我们对canvas元素有了一个初步的认识,在接下来的章节中我们会慢慢学习canvas中图形的绘制:但是在绘制之前我们先来看看canvas中的坐标系统,因为这样我们才能知道绘制的图形放在什么 ...
- chip-seq数据分析中peak-calling软件-------MACS的安装
1.下载MACS软件安装包(作者的系统为Ubuntu) 网址链接:http://liulab.dfci.harvard.edu/MACS/ 2.解压文件: tar -zxvf MACS**.tar.g ...
- 匿名属性 anonymous property
利用匿名属性可以用很简洁的语法来自动声明不可变(immutable)的元组(tuple)类型. 属性:在字段用来表示类型和对象的状态的前提下,希望状态不被随意的更改,字段一般应该设置为private, ...
- watchdog(IWDG)
1.为了避免程序忙跑跑死了没反应,加上一个看门狗watchdog实时监控着程序,一旦程序没有在规定的时间喂狗,则狗叫使得单片机复位. 2.Independent watchdog(IWDG)内部有时钟 ...
- DDD领域驱动之干活(四)补充篇!
距离上一篇DDD系列完结已经过了很长一段时间,项目也搁置了一段时间,想想还是继续完善下去. DDD领域驱动之干货(三)完结篇! 上一篇说到了如何实现uow配合Repository在autofac和au ...