一、开发流程

1)引入jar包,注意引入数据库驱动包

2)创建数据库表

//创建用户表
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(),
ugender CHAR());
//创建地址表
CREATE TABLE address(
uid INT,
addr VARCHAR(),
FOREIGN KEY (uid) REFERENCES USER(id));

3)创建实体类

import java.util.HashSet;
import java.util.Set; public class User {
private int id;
private String uname;
private String ugender;
private Set<String> address = new HashSet<String>(); public User() {
// TODO Auto-generated constructor stub
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public String getUgender() {
return ugender;
} public void setUgender(String ugender) {
this.ugender = ugender;
} public Set<String> getAddress() {
return address;
} public void setAddress(Set<String> address) {
this.address = address;
} @Override
public String toString() {
return "User [id=" + id + ", uname=" + uname + ", ugender=" + ugender
+ "]";
} }

4)创建映射文件,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"> <!-- This mapping demonstrates content-based discrimination for the
table-per-hierarchy mapping strategy, using a formula
discriminator. --> <hibernate-mapping
package="com.huitong.entity"> <class name="User" table="user">
<id name="id" column="id">
<generator class="native"/>
</id> <property name="uname" column="uname"></property>
<property name="ugender" column="ugender"></property> <set name="address" table="address">
<key column="uid"></key>
<element column="addr" type="string"></element>
</set> </class>
</hibernate-mapping>

注意:地址栏因为是set集合,因此需要使用table。要指明外键和其他列的类型type,因为没有Bean类与其对应,因此要指明对象类型。

5) 配置hibernate.cfg.xml

<!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 name="UserFac">
<!-- 对数据库连接进行配置 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///day18</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 其他设置 -->
<property name="show_sql">true</property>
<property name="format_sql">true</property> <!-- 加载映射资源 -->
<mapping resource="com/huitong/entity/User.hbm.xml"/> </session-factory>
</hibernate-configuration>

二、测试集合类

使用 HQL 获取全部元素

需要注意的是:Query q = session.createQuery("from User");

中from 表要是Bean 的类型。User而不是数据表user

hibernate 中集合的保存的更多相关文章

  1. hibernate中继承映射保存

    1 简单继承映射,在子类上进行映射配置,可以将父类属性直接配置在子类映射文件中. 简单例子如下:teacher类继承自Person类. public class Person { private in ...

  2. hibernate中对象集合的保存

    一.在java web设计中经常使用对象进行操作,在hibernate中对象集合的保存(一对多) 1需要进行如下步骤: 1) 设计数据表关系 2)引入jar包,需要注意引入数据库connector 3 ...

  3. (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)

    一.先上知识点: 1.hibernate多对多关联关系中最重要的参数是(基于配置文件xxx.hbm.xml文件形式): 1):inverse属性,如果设置inverse=“true”就代表让对方参与维 ...

  4. hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了

    hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了 例如session.save(user);user.setAge(20); 原因: hibernate对象的三种 ...

  5. Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)

    Set类型的使用: <hibernate-mapping package="cn.model"> <class name="Department&quo ...

  6. Hibernate中使用@Lob 注解保存String[] 问题

    Hibernate中使用@Lob 注解保存String[] 问题 在Hibernate注解中怎样你想保存一个字段为String数组类型.假设你想尝试保存为clob类型的话,普通情况下为定义为: @En ...

  7. Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o

    Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o 1. Criteria,,Criterion ,, 1 <2. 主要的对象黑头配置磊 ...

  8. Hibernate中延迟加载和缓存

    什么是延迟加载? 延迟加载是指当应用程序想要从数据库获取对象时(在没有设置lazy属性值为false),Hibernate只是从数据库获取符合条件的对象的OId从而生成代理对象,并没有加载出对象 访问 ...

  9. Hibernate中一级缓存和二级缓存使用详解

    一.一级缓存二级缓存的概念解释 (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个 session(一定要同一个ses ...

随机推荐

  1. Android 开源项目android-open-project解析之(四) ColorPickView,GraphView,UI Style,Other

    十三.ColorPickView ColorPickerView 颜色选择器,支持PopupWindows或新的Activity中打开 项目地址:https://code.google.com/p/c ...

  2. JMeter技巧集锦

    收藏些介绍JMeter使用知识的文章 1.JMeter技巧集锦 http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-jmeter.html (网 ...

  3. 【mybatis】在mybatis分页查询时,主表对关联表 一对多 分页查询怎么实现

    现在有这样一个需求: 1.积分商品分页查询 2.一个积分商品会有多张商品图片在商品图片表  1:n的关系 这样在积分商品分页查询的时候,想要顺便把每个积分商品对应的商品图片信息也带出来 实现如下: 1 ...

  4. react组件引用时的default常见错误

    1.下面使用方法是正确的: export class StepLoad extends React.Component {} 引用上面插件的方法,重命名 import {StepLoad as Ste ...

  5. 高性能CSS

    避免使用@import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入@import.而在外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟.虽然规则允许在样 ...

  6. C#模拟MSN窗体抖动

    C#模拟MSN窗体抖动 窗体抖动是件很有意思的事情,就让我们看看一起来看看它的原理吧. 其实是生成随机数,然后改变Form的左上角的坐标.我用的是循环来弄得,其实可以用timer来控制. 我把抖动分成 ...

  7. 详解vue父组件传递props异步数据到子组件的问题

    案例一 父组件parent.vue // asyncData为异步获取的数据,想传递给子组件使用 <template> <div> 父组件 <child :child-d ...

  8. IDEA下clean Maven项目

    如何调试出窗口: 点击菜单栏View->Tool Windows->Maven projects ♦如下图,选中之后.点击绿色三角形就可以clean了

  9. Sqlite-SQLiteHelper类,操作SQLite数据库

    using System; using System.Data; using System.Text.RegularExpressions; using System.Xml; using Syste ...

  10. PHP 支持简写方式

    在我的Windows系统里使用的是"WAMP"集成环境 如果要让PHP支持简写方式则需要在PHP.ini里将short_open_tag 设置为on 更改php.ini文件后需要重 ...