hibernate映射简单实例
1创建数据库:
--班级表
create table grade
(
gid number primary key, --班级ID
gname varchar2(50), --班级名称
gdesc varchar2(50) --班级介绍
);
--学生表
create table student
(
sid number primary key, --主键ID学生ID
sname varchar2(20), --学生姓名
sex varchar2(20), --学生性别
gid number references grade(gid) ---外键班级ID
); --学生证表
create table paper
(
pid number primary key,
pdesc varchar2(100) ,
sid number references student(sid) not null );
二、创建配置文件和持久化类:
学生类
package entity; /*
* 学生类
*/
public class Student implements java.io.Serializable { // Fields private static final long serialVersionUID = 1L;
private int sid;
private String sname;
private String sex;
//增加班级属性
private Grade grade;
//学生证类
private Paper paper; // Constructors /** default constructor */
public Student() {
} /** minimal constructor */
public Student(int sid) {
this.sid = sid;
} /** full constructor */
public Student(int sid, String sname, String sex ) { this.sid = sid; this.sname = sname;
this.sex = sex;
} // Property accessors public int getSid() {
return this.sid;
} public void setSid(int sid) {
this.sid = sid;
} public String getSname() {
return this.sname;
} public void setSname(String sname) {
this.sname = sname;
} public String getSex() {
return this.sex;
} public void setSex(String sex) {
this.sex = sex;
} public Grade getGrade() {
return grade;
} public void setGrade(Grade grade) {
this.grade = grade;
} public Paper getPaper() {
return paper;
} public void setPaper(Paper paper) {
this.paper = paper;
} }
学生证类
package entity; /*
* 学生证类
*/ public class Paper implements java.io.Serializable { // Fields private static final long serialVersionUID = 1L;
private int pid;
private Student student;
private String pdesc; // Constructors /** default constructor */
public Paper() {
} /** minimal constructor */
public Paper(int pid) {
this.pid = pid;
} /** full constructor */
public Paper(int pid, Student student, String pdesc) {
this.pid = pid;
this.student = student;
this.pdesc = pdesc;
} // Property accessors public int getPid() {
return this.pid;
} public void setPid(int pid) {
this.pid = pid;
} public Student getStudent() {
return this.student;
} public void setStudent(Student student) {
this.student = student;
} public String getPdesc() {
return this.pdesc;
} public void setPdesc(String pdesc) {
this.pdesc = pdesc;
} }
hibernate.cfg.xml配置文件
<?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="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:orcl
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
oracle.jdbc.OracleDriver
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property> <mapping resource="entity/Grade.hbm.xml" />
<mapping resource="entity/Student.hbm.xml" />
<mapping resource="entity/Paper.hbm.xml" /> </session-factory> </hibernate-configuration>
Student类配置文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="entity.Student" table="STUDENT" schema="ROOT">
<id name="sid" type="java.lang.Integer">
<column name="SID" precision="22" scale="0" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" length="20" />
</property>
<property name="sex" type="java.lang.String">
<column name="SEX" length="20" />
</property>
<!--配置grade属性 -->
<many-to-one name="grade" class="entity.Grade" cascade="save-update">
<!--指定学生表中的外键 -->
<column name="GID" />
</many-to-one>
<!-- 添加学生证的配置 -->
<one-to-one name="paper" class="entity.Paper" cascade="all" lazy="false"/>
</class>
</hibernate-mapping>
Paper类配置文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="entity.Student" table="STUDENT" schema="ROOT">
<id name="sid" type="java.lang.Integer">
<column name="SID" precision="22" scale="0" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" length="20" />
</property>
<property name="sex" type="java.lang.String">
<column name="SEX" length="20" />
</property> <!-- 添加学生证的配置 -->
<one-to-one name="paper" class="entity.Paper" cascade="all" lazy="false" property-ref="student"/>
</class>
</hibernate-mapping>
测试类
package Test; import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import entity.Paper;
import entity.Student; public class Demo6 { public static void main(String[] args) {
findByStu();
} public static void save() { Student stu1 = new Student();
stu1.setSid(20151109);
stu1.setSname("王霸");
stu1.setSex("女"); Paper paper=new Paper();
paper.setPid(9001);
paper.setPdesc("王霸的学生证");
paper.setStudent(stu1); stu1.setPaper(paper); // 建立session
Session session = new Configuration().configure().buildSessionFactory()
.openSession();
// 开始事务
Transaction transaction = session.beginTransaction(); // 保存学生证
session.save(stu1);
// 提交事务
transaction.commit();
// 关闭session
session.close(); } public static void find() {
// 建立session
Session session = new Configuration().configure().buildSessionFactory()
.openSession();
Paper paper=(Paper) session.get(Paper.class, 9001);
System.out.println(paper.getPid()+paper.getPdesc());
Student stu1=paper.getStudent();
System.out.println(stu1.getSid()+"\t"+stu1.getSname());
}
public static void findByStu() {
// 建立session
Session session = new Configuration().configure().buildSessionFactory()
.openSession();
Student stu=(Student) session.get(Student.class, 20151109);
System.out.println(stu.getSname());
Paper paper=stu.getPaper();
System.out.println(paper.getPid()+"\t"+paper.getPdesc());
} }
hibernate映射简单实例的更多相关文章
- Hibernate 最简单实例
我从网上下载了 hibernate-release-4.3.0.Final.zip,解压缩,把/lib/required文件夹下的所有jar包加入到eclipse项目中的Referenced Libr ...
- Hibernate(二)__简单实例入门
首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...
- (Hibernate进阶)Hibernate搭建开发环境+简单实例(二)
hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和 ...
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
Hibernate是很典型的持久层框架,持久化的思想是很值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理 ...
- Hibernate笔记——第一个简单实例
1. 首先进行框架配置 导包 hibernate配置xml文件 ======================= 2. 创建并配置POJO类 Hibernate是操作持久化层的框架,和数据库打交道,其 ...
- 【转】pringMVC+Hibernate+Spring 简单的一个整合实例
ref:http://langgufu.iteye.com/blog/2088355 SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,我在博客 ...
- Hibernate框架简单应用
Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...
- 02.Hibernate映射基础
前言:Hibernate的核心功能是根据数据库到实体类的映射,自动从数据库绑定数据到实体类.使我们操作实体类(Java对象)就能对数据库进行增.删.查.改,而不用调用JDBC API使数据操作变得简单 ...
- 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)
[SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...
随机推荐
- Android 之 悬浮窗口
1. 创建并设置 WindowManager 类 WindowManager mWindowManager; // 取得系统窗体 mWindowManager = (WindowManager) ...
- ubuntu安装selenium谷歌插件
爬虫之selenium 安装与 chromedriver安装 今天学到一个有意思的插件,就是chromedriver,在爬虫的时候,如果网站反爬虫做的很好,自己又很想爬去里面的数据,那就可以用这个插件 ...
- Java加载Class文件的原理机制
详见:http://blog.sina.com.cn/s/blog_6cbfd2170100ljmp.html 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器 ...
- SpringBoot+SpringCloud 笔记
SpringBoot总结 使用Typora打开https://pan.baidu.com/s/1tXS45j6ooXpnzhy1Zp78Gw 提取码: c8fi SpringCloud总结 使用XMi ...
- IDEA启动软件可以选择进入项目而不是直接进入项目
1.File--->Settings 2.Appearance & behavior --->System Settings --->Reopen last project ...
- 上传大文件(100G)的解决方案
4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上 ...
- Luogu P2619 [国家集训队2]Tree I 凸优化,wqs二分
新学的科技.设\(f(x)\)为选\(x\)条白色边的时候的最小生成树权值和,那么可以猜到它应该是一个下凸函数的形式. 如图,图中\(x\)坐标表示选的白色边条数,\(y\)坐标表示获得的权值,那么我 ...
- 【洛谷P1490】买蛋糕
题目大意:给定一个正整数 N,求至少从 [1,N] 中选出多少个数能够表示出 [1,N] 中的所有整数,每个数只能被选 1 次,并求出对于最优解有多少种不同的选择方案. 题解:好题. 仅考虑用最少的不 ...
- 负载均衡(三)Nginx的安装配置
linux系统为Centos 64位 一.安装 [root@cuiqq local]# mkdir /usr/local/nginx [root@cuiqq local]# cd /usr/local ...
- 机器学习降维--SVD奇异值分解
奇异值分解是有着很明显的物理意义,将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性,让机器学会抽取重要的特征,SVD是一个重要的方法. 所以SVD不仅是一个 ...