hibernate 简单笔记(二)
记录一个hibernate一对多的例子。
前提:
1. 当前有表t_book,如hibernate简单笔记(一)中的例子;
2. 建立新表t_owner:
CREATE TABLE t_owner( id INT AUTO_INCREMENT PRIMARY KEY, book_id INT, myname VARCHAR(30) NOT NULL, FOREIGN KEY(book_id) REFERENCES t_book(id));
一.生成对象关系映射文件TOwner.hbm.xml,并在hibernate.cfg.xml中添加mapping。下述例子中由Myeclipse自动生成:
<hibernate-mapping> <class name="com.TOwner" table="t_owner" catalog="db_fredric"> <id name="id" type="integer"> <column name="id" /> <generator class="assigned" /> </id> <many-to-one name="TBook" class="com.TBook" fetch="select"> <column name="book_id" /> </many-to-one> <property name="myname" type="string"> <column name="myname" length="30" not-null="true" /> </property> </class> </hibernate-mapping>
二.创建持久类,注意不同的地方是属于外键的那个属性被替换为一个类:
public class TOwner { private Integer id; private TBook TBook;//映射TBook类 private String myname; public Integer getId() { return id; } //略
三.操作
public static void main(String[] args) { // TODO Auto-generated method stub Configuration con = new Configuration(); con.configure(); SessionFactory sessionfactory = con.buildSessionFactory(); Session session = null; Transaction tran = null; try{ session = sessionfactory.openSession(); tran= session.beginTransaction(); TOwner owner = (TOwner) session.get(TOwner.class, new Integer(1)); System.out.println(owner.getTBook().getBook()); System.out.println(owner.getTBook().getName()); System.out.println(owner.getMyname()); tran.commit(); }catch(RuntimeException e){ if(null != tran){tran.rollback();} }finally{ session.close(); } } }
如上例通过t_book中的外码,相应的book记录也被取出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)