hibernate 中集合的保存
一、开发流程
1)引入jar包,注意引入数据库驱动包
2)创建数据库表
//创建用户表 CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(50), ugender CHAR(2));
//创建地址表 CREATE TABLE address( uid INT, addr VARCHAR(200), 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"> <!-- 1 对数据库连接进行配置 --> <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">123456</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 2 其他设置 --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 3 加载映射资源 --> <mapping resource="com/huitong/entity/User.hbm.xml"/> </session-factory> </hibernate-configuration>
二、测试集合类
使用 HQL 获取全部元素
需要注意的是:Query q = session.createQuery("from User");
中from 表要是Bean 的类型。User而不是数据表user
学习过程中,难免出错。如果您在阅读过程中遇到不太明白,或者有疑问。欢迎指正...联系邮箱crazyCodeLove@163.com
如果觉得有用,想赞助一下请移步赞助页面:赞助一下
分类:
java web 基础知识
标签:
hibernate 中集合的保存
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)