Hibernate的多对一操作:

例子参考引用:

http://www.tutorialspoint.com/hibernate/hibernate_many_to_one_mapping.htm

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> <!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1/testdb</property>
<property name="connection.username">root</property>
<property name="connection.password"></property> <!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property> <!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property> <!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property> <mapping resource="com/my/hbm/User.hbm.xml"/>
<mapping resource="com/my/hbm/UserAccount.hbm.xml"/> </session-factory> </hibernate-configuration>

User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <class name="com.my.bean.User" table="user">
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String" length="50">
<column name="name" not-null="true" length="50" />
</property>
<property name="age" type="int">
<column name="age" />
</property>
<property name="password" type="java.lang.String" length="50">
<column name="password" length="50" />
</property>
<property name="email" type="java.lang.String" length="100">
<column name="email" length="100" />
</property>
<property name="createtime" type="java.util.Date">
<column name="createtime" />
</property>
</class> </hibernate-mapping>

UserAccount.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <class name="com.my.bean.UserAccount" table="user_account">
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<many-to-one name="user" column="user_id" class="com.my.bean.User" not-null="true"></many-to-one>
<property name="account" type="java.lang.String" length="50">
<column name="account" not-null="true" length="50" />
</property>
</class> </hibernate-mapping>

Java Bean: User.java

package com.my.bean;

import java.util.Date;

public class User {
private int id;
private String name;
private int age;
private String password;
private String email;
private Date createtime; public int getId() {
return id;
}
public void setId(int 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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
}

Java Bean: UserAccount.java

package com.my.bean;

public class UserAccount {

    private int id;
private String account;
private User user; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
} }

HibernateUtil.java

package com.my.dao.util;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration();
return configuration.configure().buildSessionFactory(
new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build());
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
} public static SessionFactory getSessionFactory() {
return sessionFactory;
} }

测试:

package com.my.init;

import java.util.Date;
import java.util.List; import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session; import com.my.bean.User;
import com.my.bean.UserAccount;
import com.my.dao.util.HibernateUtil; public class Test { public static void main(String[] args) {
Test t = new Test(); // Add new user
User user = t
.addUser("robin", "abcd1234", "robin@88db.com", new Date());
System.out.println(user.getId()); // Get user list
List<User> users = t.listUser();
for (User item : users) {
System.out.println("User name: " + item.getName());
} // Add UserAccount
UserAccount ua = t.addUserAccount("robinzhang", user);
System.out.println("Add UserAccount: " + ua.getId()); // Update UserAccount
UserAccount ua_u = t.updateUserAccount(ua.getId(), "robin_zhang");
System.out.println("Update UserAccount: " + ua_u.getAccount()); // Get User Account List
List<UserAccount> uas = t.listUserAccount();
for (UserAccount item : uas) {
System.out.println("UserAccount: " + item.getAccount());
System.out.println("UserID: " + item.getUser().getId());
} // Delete UserAccount
boolean result = t.deleteUserAccount(1);
System.out.println("Delete UserAccount: " + result); // Delete User
result = t.deleteUser(user);
System.out.println("Delete User: " + result);
} /**
* List Users
*/
@SuppressWarnings("unchecked")
public List<User> listUser() {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); List<User> users = null;
try {
// Select action
String hqlSelect = "from User where name like :name";
Query query = session.createQuery(hqlSelect);
query.setParameter("name", "%ro%");
users = query.list();
session.getTransaction().commit();
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
}
return users;
} /**
* Add new user
*
* @param name
* User name
* @param password
* User password
* @param email
* User email
* @param createtime
* User create time
* @return User object
*/
public User addUser(String name, String password, String email,
Date createtime) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); User u = new User();
try {
u.setName(name);
u.setPassword(password);
u.setCreatetime(createtime);
u.setEmail(email);
u.setAge(18);
// Get new user id
Integer userid = (Integer) session.save(u);
session.getTransaction().commit();
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
} return u;
} /**
* Get UserAccount Object
*
* @param account
* account name
* @param user
* User ID
* @return UserAccount object
*/
public UserAccount addUserAccount(String account, User user) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); UserAccount ua = null;
try {
ua = new UserAccount();
ua.setAccount(account);
ua.setUser(user);
session.save(ua);
session.getTransaction().commit();
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
} return ua;
} /**
* Get User Account List
*
* @return
*/
@SuppressWarnings("unchecked")
public List<UserAccount> listUserAccount() {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); List<UserAccount> uas = null;
try {
String hqlSelect = "from UserAccount where account like :account";
Query query = session.createQuery(hqlSelect);
query.setParameter("account", "%ro%");
uas = query.list();
session.getTransaction().commit();
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
} return uas;
} /**
* Update User Account
*
* @param id
* @param account
*/
public UserAccount updateUserAccount(Integer id, String account) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); UserAccount ua = null;
try {
ua = (UserAccount) session.get(UserAccount.class, id);
ua.setAccount(account);
session.update(ua);
session.getTransaction().commit();
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
} return ua;
} /**
* Delete UserAccount
*
* @param id
* @return true/false
*/
public boolean deleteUserAccount(Integer id) {
boolean result = false;
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); try {
UserAccount ua = (UserAccount) session.get(UserAccount.class, id);
session.delete(ua);
session.getTransaction().commit();
result = true;
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
} return result;
} /**
* Delete User
*
* @param user
* @return
*/
public boolean deleteUser(User user) {
boolean result = false;
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); try {
session.delete(user);
session.getTransaction().commit();
result = true;
} catch (HibernateException e) {
if (session.getTransaction() != null)
session.getTransaction().rollback();
e.printStackTrace();
} finally {
session.close();
} return result;
} }

使用Hibernate会自动建库。

[Hibernate] - many to one的更多相关文章

  1. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  2. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  3. hibernate多对一双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  4. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  5. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  6. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  7. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  8. hibernate的基本xml文件配置

    需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...

  9. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  10. 1.Hibernate简介

    1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发;           b.大大减少代码量;           c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...

随机推荐

  1. C++的虚函数表

    这里的例子全部来自陈皓的C++ 虚函数表解析,经过修改的. 编译器:g++ (Ubuntu 4.9.2-10ubuntu13) 4.9.2 环境:ubuntu 15.04  64位系统(地址占8字节) ...

  2. 部分android手机CCEditBox输入之后键盘输入框不消失得问题

    用小米2s做登录界面时,用到CCEditBOx,输入完之后,键盘可以移下去,但是屏幕上还是显示得键盘自己得输入框,这时点击屏幕任何位置都无法把输入框干掉. 为什么ios上就没有这些android得琐碎 ...

  3. Java 最简单的计算器——使用Args参数

    public class Test{ public static void main(String[] args){ if(args.length<3){ System.out.println( ...

  4. 阿里云2003服务器VPN搭建[转自阿里云官方论坛]

    VPN可以应用在很多方面,很多公司只是拿它接入公司内部网络,但我们做安全的需要的是利用它做跳板上网(还有提高网速).这篇文章主要是针对这种应用来说的,包括公网VPN的配置. 服务器配置 前奏:关闭防火 ...

  5. Install Oracle Java JDK/JRE 7u55 on Fedora 20/19, CentOS/RHEL 6.5/5.10

    What’s new in Sun/Oracle Java 7 VM Compressed 64-bit object pointers Garbage-First GC (G1) JSR 292: ...

  6. linux shell 逻辑运算符、逻辑表达式详解

    shell的逻辑运算符 涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果. 一.逻辑运算符 逻辑卷标 表示意思 1. 关于档案与目录的侦测逻辑卷标! -f 常用!侦测 ...

  7. 转:db2 iptables相关用法(2)

    Centos 6 iptables 配置 Ben 2011/12/24 [root@localhost ben.liu]# service iptables status Table: filter ...

  8. URAL 1080 Map Coloring(染色)

    Map Coloring Time limit: 1.0 secondMemory limit: 64 MB We consider a geographical map with N countri ...

  9. 继承:《原型和原型链(prototype 属性使您有能力向对象添加属性和方法。)》

    二. 原型对象   在JavaScript 中,每当定义一个对象(函数)时候,对象中都会包含一些预定义的属性.其中函数对象的一个属性就是原型对象 prototype.注:普通对象没有prototype ...

  10. java的nio之:java的nio系列教程之buffer的概念

    一:java的nio的buffer==>Java NIO中的Buffer用于和NIO通道Channel进行交互.==>数据是从通道channel读入缓冲区buffer,从缓冲区buffer ...