1.项目示图如下:

2.Bank类:
package com.eduask.pojo;
import java.util.Date;
//Bank表的字段为 id 、name time
public class Bank{
private int id;
private String name;
private Date time;
private Pay pay;
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 Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public Pay getPay() {
return pay;
}
public void setPay(Pay pay) {
this.pay = pay;
}
@Override
public String toString() {
return "Bank [id=" + id + ", name=" + name + ", time=" + time + ", pay="
+ pay + "]";
}
public Bank() {
super();
// TODO Auto-generated constructor stub
}
public Bank(int id, String name, Date time, Pay pay) {
super();
this.id = id;
this.name = name;
this.time = time;
this.pay = pay;
}
}
3.Pay类:
package com.eduask.pojo;
public class Pay {
private int year;
private int month;
private int day;
private Bank bank;
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public Bank getBank() {
return bank;
}
public void setBank(Bank bank) {
this.bank = bank;
}
@Override
public String toString() {
return "Pay [year=" + year + ", month=" + month + ", day=" + day
+ ", bank=" + bank + "]";
}
public Pay(int year, int month, int day, Bank bank) {
super();
this.year = year;
this.month = month;
this.day = day;
this.bank = bank;
}
public Pay() {
super();
// TODO Auto-generated constructor stub
}
}
4.Bank.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-7-15 14:21:30 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<!-- 配置指定的类,会自动创建表,其表名就是类名的小写,然我们也可以自己来指定表名
通过table=""属性就可以指定自己想要的表名
-->
<class name="com.eduask.pojo.Bank">
<!-- id就是类中的唯一标识 -->
<id name="id" >
<!-- 自动生成id ,class=native 底层是根据不同数据库生成主键的方式自动生成 -->
<generator class="native" />
</id>
<!-- name是类中的属性
type 是指定数据库中字段的类型
column 数据库的字段
如果不指定类型和字段名那么数据库中的字段是根据类中的属性类型和名字来定的
-->
<!--bank类中的属性 -->
<property name="name"></property>
<property name="time"></property>
<!-- 组成关系 -->
<component name="pay">
<parent name="bank"/>
<property name="year"></property>
<property name="month"></property>
<property name="day"></property>
</component>
</class>
</hibernate-mapping>
5.hibernate.cfg.xml
<?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">
<hibernate-configuration>
<session-factory>
<!-- 配置数据库信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/mydb</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 配置数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 配置自动创建表
create:先把原有表删除然后再创建一个新的表,之后执行session的方法
create-drop:先把原有表删除然后再创建一个新的表,当sessionfactory关闭之后,这张表也随之删除
update:如果表存在就执行session中的方法,否则先创建然后在执行session中的方法
validate:不会自动生成表,字段和传入的数据不匹配就会报错
-->
<property name="hbm2ddl.auto">update</property>
<!-- 配置在控制台中打印sql -->
<property name="show_sql">true</property>
<!-- 配置打印的sql 格式化 -->
<property name="format_sql">true</property>
<!-- 配置连接池c3p0 -->
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<!-- 配置加载类映射的文件 -->
<mapping resource="com/eduask/pojo/Bank.hbm.xml"/>
</session-factory>
</hibernate-configuration>
6.BankTest测试类:
package com.eduask.test;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Before;
import org.junit.Test;
import com.eduask.pojo.Bank;
import com.eduask.pojo.Pay;
import com.eduask.util.HibernateUtil;
public class BankTest {
private SessionFactory sessionFactory;
@Before
public void setUp() throws Exception {
//使用hibernateUtil工具类来创建单例的sessionFactory 对象
//再使用sessionFactory 对象来创建session
//工具类提供一个创建session的方法
sessionFactory=HibernateUtil.getSessionFactory();
}
//增加;
@Test
public void testInsert(){
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Pay p=new Pay();
p.setDay(22);
p.setMonth(7);
p.setYear(2016);
Bank b=new Bank();
b.setName("中国农业银行");
b.setTime(new Date());
b.setPay(p);
session.save(b);
tx.commit();
session.close();
}
}
7.工具类,这里就不用写了。
8.程序运行之前,数据库中没有bank这个表;

9.程序运行如下:

10.查看数据库:

分享到:
相关推荐
当数据库表的主键由多个字段组成时,我们称之为复合主键。在 Hibernate 中,可以通过创建一个独立的主键类来表示复合主键,这个类需要实现 `Serializable` 接口,并重写 `equals()` 和 `hashcode()` 方法。在映射...
首先,Spring框架的核心特性之一就是依赖注入(Dependency Injection,简称DI),它允许开发者将对象之间的依赖关系从代码中解耦,提高了代码的可测试性和可维护性。在Spring中,注解是实现依赖注入的主要方式,如`@...
22. 主关键字段:每个表不一定都需要主关键字段,但在关系数据库中,主键用于确保数据的唯一性,可以由单个字段或一组字段构成,并且不允许有重复值和空值。 23. 事件描述:事件不是基于特定时间周期触发的,而是...
在C#中,可以通过使用`System.ComponentModel`命名空间中的特性来定义属性,如`DefaultValue`(指定默认值)和`Category`(分组属性)。以下是一个添加自定义属性的例子: ```csharp [DefaultValue("默认文本")] ...
2. **定义字段**:通过调用`NewField`方法来添加新的字段,并设置其属性,如字段类型(使用`FieldType`),这通常对应于数据源表中的某一列。 3. **创建数据集**:通过`CreateDataset`方法创建数据集,准备数据的...
在IT行业中,数据字典是数据库设计的重要组成部分,它详细记录了系统中各个数据元素的定义、属性以及它们之间的关系。这里我们将深入探讨在提供的文件中提到的多个表格,这些表格代表了不同的实体和业务概念,对于...
这些表达式可以使用数据库表中的字段进行计算,例如求和、平均值等。通过TQuery组件,开发者可以使用SQL语言访问数据库表中的数据,并进行复杂的数据操作。 #### 链接表 在处理多个相关联的数据库表时,Delphi 7...
EBAN 表是 SAP 采购订单中的临时数据表,CI_EBANDB 是其相关的内部表结构,用于存储屏幕字段的值。在这里,我们需要为这个结构添加新的增强字段,以扩展字段集。 3. **实现组件中的每个 Include 文件**: 包含...
- 在一对一映射中,通常一个实体类对应数据库的一个表,而两个类之间的一对一关系可以通过共享主键来实现。 - 一对多映射则是指一个实体类对应多个实例,这通常通过在“多”的一方添加外键来实现。 - 多对一与一...
- 通过Join操作,将S_ASSET_X表中的字段引入到BC中,例如ATTRIB_03、ATTRIB_26等,以提供车辆的附加信息。 4. **处理字段验证错误** - 对于字段设置预默认值时出现的验证错误,需要检查表达式语法是否正确,例如...
5. 表之间的关系可以通过增加、删除或修改关联字段来调整,删除关系通常在“关系”窗口中进行,简单地双击关系连线并不能删除关系。 6. Java中的`Component`是所有图形用户界面组件的基类,`Button`、`Dialog`和`...
具体来说,我们可以创建一个新的Excel实例,添加新的工作簿,然后在工作簿中创建新的工作表。接着,通过循环遍历读取到的文本数据,将每个字段写入到对应的Excel单元格中。 在编程过程中,需要注意的是数据类型转换...
5. **构建与注入**:通过`DaggerXXXComponent.builder()`创建Component实例,然后调用`build()`方法构建,最后使用`inject()`方法将依赖注入到目标对象中。 6. **Scope(范围)**:Dagger2支持使用`@Singleton`、`@...
在C++ Builder中,可以使用VCL(Visual Component Library)组件库中的控件,如TDBEdit、TDBGrid等,与SQL Server数据库连接,通过ADO(ActiveX Data Objects)或BDE(Borland Database Engine)进行数据操作。...
以上是Rabbit框架中Data组件的主要使用要点及注意事项,开发者可以根据实际项目需求灵活选择合适的映射方式。通过掌握这些知识,开发者能够更高效地进行数据访问操作,提升应用程序的性能与可靠性。
透明表在数据库级别按照标准关系表的方式存储。 #### 8. 处理批处理输入会话时可能会遇到哪些问题?批处理输入过程与在线处理有何不同? - **问题**:可能包括数据格式错误、权限不足、系统资源限制等。 - **差异*...
- 当使用 **APPEND BLANK** 命令向数据库中添加一条空记录后,新记录的位置取决于当前记录指针的位置。 ### 22. Access 查询设计视图中的字段选项 - 查询“设计视图”窗口中字段列表框中的选项包括 **排序**、**...
- **功能描述**:Split Button 是一个组合按钮,主要由一个主按钮和一个下拉菜单组成。 - **主要用途**:提供扩展的功能选项,用户可以通过点击按钮旁边的箭头来展开更多选项。 **2.11 Tab Panel (Ext.TabPanel)** ...
在EJB规范中,Component-Managed Persistence (CMP) 和 Container-Managed Relationships (CMR) 是两个重要的概念,它们简化了数据持久化和对象关系映射的过程。 ### 1. EJB-CMP (组件管理持久性) EJB-CMP 提供了...
对于复合对象标识符(Composite-id),可以使用 `<composite-id>` 来映射由多个字段组成的主键。 5. 双向关联关系映射: - 双向一对多(多对一)关联:`<many-to-one>` 在主控类(如 `Department`)中映射多对一...