<?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"> <!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration> <session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/student
</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">MySQL</property>
<property name="show_sql">true</property>
<!-- 格式化显示SQL -->
<property name="format_sql">true</property> <property name="current_session_context_class">thread</property>
<!-- 让hibernate自动创建表 update:如果没有表则创建,有表则更新 -->
<property name="hbm2ddl.auto">create</property>
<mapping class="cqvie.yjq.domain.School" />
<mapping class="cqvie.yjq.domain.Student" />
</session-factory> </hibernate-configuration>

Hibernate.cfg.xml

 package cqvie.yjq.domain;

 import java.io.Serializable;

 import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity
@Table(name = "school_2", catalog = "test")
public class School implements Serializable { private static final long serialVersionUID = -9135891983324864046L; @Id
@GenericGenerator(name = "generator", strategy = "uuid")
@GeneratedValue(generator = "generator")
@Column(name = "s_num", unique = true, nullable = false)
private String s_num;
@Column(name = "s_name", length = 50, nullable = false)
private String s_name;
@Column(name = "s_addr", length = 100, nullable = false)
private String s_addr; public String getS_num() {
return s_num;
}
public void setS_num(String sNum) {
s_num = sNum;
}
public String getS_name() {
return s_name;
}
public void setS_name(String sName) {
s_name = sName;
}
public String getS_addr() {
return s_addr;
}
public void setS_addr(String sAddr) {
s_addr = sAddr;
}
}

实体类School

 package cqvie.yjq.domain;

 import java.io.Serializable;

 import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity
@Table(name = "student_2", catalog = "test")
public class Student implements Serializable { private static final long serialVersionUID = 7571983435023574040L; @Id
@GenericGenerator(name = "generator", strategy = "uuid")
@GeneratedValue( generator = "generator")
@Column(name = "id", nullable = false, unique = true)
private String id; @Column(name = "name", nullable = false, length = 20)
private String name; @Column(name = "age", nullable = false, length = 3)
private int age; @ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name = "s_num")
private School school; public School getSchool() {
return school;
}
public void setSchool(School school) {
this.school = school;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

实体类Student

 package cqvie.yjq.View;

 import org.hibernate.Session;
import org.hibernate.Transaction; import cqvie.yjq.Util.HibernataUtil;
import cqvie.yjq.domain.School;
import cqvie.yjq.domain.Student; public class Test { public static void main(String[] args) { Session session = null;
Transaction tx = null;
try {
session = HibernataUtil.getCurrentSession();
tx = session.beginTransaction();
//添加
School sc = new School();
sc.setS_name("重庆工业职业技术学院");
sc.setS_addr("重庆渝北"); Student stu = new Student();
stu.setSchool(sc);
stu.setAge(17);
stu.setName("马士兵"); session.save(stu); tx.commit();
} catch (Exception e) {
if(tx != null) {
tx.rollback();
}
} finally {
if(session != null && session.isOpen()) {
session.close();
}
} }
}

测试类Test

package cqvie.yjq.Util;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration; final public class HibernataUtil { private static SessionFactory sessionFactory = null;
//使用线程局部模式
private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private HibernataUtil() {};
static {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
//获取全新的session
public static Session openSession() {
return sessionFactory.openSession();
}
//获取和线程关联的session
public static Session getCurrentSession() {
Session session = threadLocal.get();
//判断是否得到
if(session == null) {
session = sessionFactory.openSession();
//把session对象设置到threadLocal,相当于已经和线程绑定
threadLocal.set(session);
}
return session;
} //提供一个统一的修改和删除方法(批量)
public static void executeUpdate(String hql, String[] parameters) {
Session s = null;
Transaction ts = null;
try {
s = openSession();
ts = s.beginTransaction();
Query query = s.createQuery(hql);
//先判断是否有参数要绑定
if(parameters != null && parameters.length > 0) {
for(int i=0;i<parameters.length;i++) {
query.setString(i, parameters[i]);
}
}
query.executeUpdate();
ts.commit();
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
if(s != null && s.isOpen()) {
s.close();
}
}
} //提供一个统一的添加方法
public static void sava(Object obj) {
Session s = null;
Transaction ts = null;
try {
s = openSession();
ts = s.beginTransaction();
s.save(obj);
ts.commit();
} catch (Exception e) {
if(ts != null) {
ts.rollback();
}
throw new RuntimeException();
} finally {
if(s != null && s.isOpen()) {
s.close();
}
}
} //提供一个统一的查询方法(分页)
@SuppressWarnings("unchecked")
public static List executeQueryByPage(String hql, String[] parameters, int pageSize, int pageNow) {
Session s = null;
List list = null;
try {
s = openSession();
Query query = s.createQuery(hql);
//先判断是否有参数要绑定
if(parameters != null && parameters.length > 0) {
for(int i=0;i<parameters.length;i++) {
query.setString(i, parameters[i]);
}
}
query.setFirstResult((pageNow-1)*pageSize).setMaxResults(pageSize);
list = query.list();
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
if(s != null && s.isOpen()) {
s.close();
}
}
return list;
} //提供一个统一的查询方法 hql 形式 from 类 where 条件=?
@SuppressWarnings("unchecked")
public List executeQuery(String hql, String[] parameters) {
Session s = null;
List list = null;
try {
s = openSession();
Query query = s.createQuery(hql);
//先判断是否有参数要绑定
if(parameters != null && parameters.length > 0) {
for(int i=0;i<parameters.length;i++) {
query.setString(i, parameters[i]);
}
}
list = query.list();
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
if(s != null && s.isOpen()) {
s.close();
}
}
return list;
}
}

工具类HibernateUtil

Hibernate一对多(注解)的更多相关文章

  1. Hibernate 一对多注解 mappedby 作用

    package oneToMany; import java.util.Set; import javax.persistence.*; /* 注意导入时,是导入:import javax.persi ...

  2. hibernate一对多注解

    package net.zmcheng.model; import java.util.HashSet;import java.util.Set; import javax.persistence.C ...

  3. Hibernate @OneToMany 一对多注解

    配置一 @OneToMany(cascade=CascadeType.ALL) @JoinColumn(name="fatherID") //对应儿子类的哪个字段 子类中配置Man ...

  4. 用户、角色、权限三者多对多用hibernate的一对多注解配置

    用户.角色.权限三者多对多用hibernate的一对多注解配置 //权限表@Table(name = "p")public class P { @Id @GeneratedValu ...

  5. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

  6. Hibernate的Annotation注解

    当项目变得比较大的时候,如何还使用hbm.xml文件来配置Hibernate实体就会变得比较复杂.这里Hibernate提供了Annotation注解方式,使得Hibernate的映射文件变得很方便管 ...

  7. hibernate 一对多关系中的孤儿属性

    @OneToMany(targetEntity = BenefitType.class, mappedBy = "sitePerson",cascade = CascadeType ...

  8. Hibernate一对多OnetoMany

    ------------------------Hibernate一对多OnetoMany 要点: 配置在一端. 1.如果是单向关联,即只在一端配置OneToMany,多端不配置ManyToOne.则 ...

  9. Java进阶知识10 Hibernate一对多_多对一双向关联(Annotation+XML实现)

    本文知识点(目录): 1.Annotation 注解版(只是测试建表)    2.XML版 的实现(只是测试建表)    3.附录(Annotation 注解版CRUD操作)[注解版有个问题:插入值时 ...

  10. Java进阶知识09 Hibernate一对多单向关联(Annotation+XML实现)

    1.Annotation 注解版 1.1.在一的一方加Set 1.2.创建Customer类和Order类 package com.shore.model; import java.util.Hash ...

随机推荐

  1. urlparse

    urlparse模块 urlparse主要是URL的分解和拼接,分析出URL中的各项参数,可以被其他的URL使用,而且只在python2.7中存在,python3中是在urllib包下的urllib. ...

  2. js实现表单验证 常用JS表单验证

    CSS代码 @charset "gb2312"; /* CSS Document */ body,dl,dt,dd,div,form {padding:;margin:;} #he ...

  3. Apache日志分析

    Apache日志统计举例 加些来了解一下如何统计Apache的访问日志,一般可以用tail命令来实时查看日志文件变化,但是各种的应用系统中的日志会非常复杂,一堆长度超过你浏览极限的日志出现在你眼前时, ...

  4. Hibernate注解使用以及Spring整合

    Hibernate注解使用以及Spring整合 原文转自:http://wanqiufeng.blog.51cto.com/409430/484739 (1) 简介: 在过去几年里,Hibernate ...

  5. 解决CentOS无法解析域名的问题

    用SecureCRT连接到CentOS上,发现ping IP通,ping地址不同 [root@zyt-ceshi2 ~]# ping www.baidu.comping: unknown host w ...

  6. 魅族Java面经

    1. 面试官问题怎么获取Memcached里面的session,我答request.getSession().这是通过cookie里面的sessionID获取session的,Memcached里面也 ...

  7. js部分总结

    1 currentStyle 可以获取行间样式,但是不兼容 其他浏览器用getComputedStyle(div,null)这个ie低级版本不兼容; if(div.currentStyle){ } e ...

  8. python包下载地址

    https://pypi.python.org/pypi http://www.lfd.uci.edu/~gohlke/pythonlibs/ 当在线安装安装不了时,需要将安装包下载到本地,进行本地p ...

  9. AJAX04 JQ的AJAX

    一.jQuery中的Ajax 1.jQuery为我们提供了更强大的Ajax封装 $.ajax({}) 可配置方式发起Ajax请求 $.get() 以GET方式发起Ajax请求 $.post() 以PO ...

  10. ---Java 678

    sudo add-apt-repository ppa:webupd8team/java sudo apt-get update udo apt-key adv --recv-key --keyser ...