- 浏览: 567703 次
文章分类
- 全部博客 (235)
- 数据库 (12)
- j2se (10)
- JQuery (2)
- 经验总结 (4)
- 防毒 (1)
- Struts (20)
- Spring (12)
- 项目 (3)
- 电脑维修项目 (1)
- Eclipse (2)
- JSP (13)
- mysql (5)
- Hibernate (54)
- ssh (1)
- 学习网站 (1)
- tomcat (9)
- servlet (24)
- java语言基础 (1)
- jbpm (1)
- linux (0)
- 技巧积累 (1)
- javaBean (2)
- 设计模式 (2)
- 实用的操作 (9)
- oracle (1)
- UML学习 (1)
- 版本控制 (1)
- 框架 (9)
- javaWeb基础 (13)
- c语言 (0)
- ant (0)
- 关于权限 (3)
- 真正开发有用 (5)
- javascript (2)
- 算法 (1)
- J2EE (1)
- junit (1)
最新评论
-
alleni123:
不错 一搜就搜到这个了
ssession和servletContext的比较 -
hua7381:
楼主,你真实帮了大忙了!!
万能乱码处理---url传中文 -
albrich:
1楼是正解
摘] 装了个Tomcat遇到的问题 -
JA_mcj:
ssession和servletContext的比较 -
haotw:
看了很有帮助,总算对hibernate的延迟加载有一定的了解了 ...
[转]hibernate延迟加载
java 代码
- import org.apache.commons.lang.builder.EqualsBuilder;
- import org.apache.commons.lang.builder.HashCodeBuilder;
- // default package
- /**
- * User generated by MyEclipse - Hibernate Tools
- */
- public class User implements java.io.Serializable {
- // Fields
- private String addr;
- private String name;
- private String email;
- // Constructors
- /** default constructor */
- public User() {
- }
- /** full constructor */
- public User(String email) {
- this.email = email;
- }
- // Property accessors
- public String getEmail() {
- return this.email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getAddr() {
- return addr;
- }
- public void setAddr(String addr) {
- this.addr = addr;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public boolean equals(Object other) {
- if ( (this == other ) ) return true;
- if ( (other == null ) ) return false;
- if ( !(other instanceof UserId) ) return false;
- User castOther = ( User ) other;
- // return ( (this.getAddr()==castOther.getAddr()) || ( this.getAddr()!=null && castOther.getAddr()!=null && this.getAddr().equals(castOther.getAddr()) ) )
- // && ( (this.getName()==castOther.getName()) || ( this.getName()!=null && castOther.getName()!=null && this.getName().equals(castOther.getName()) ) )
- // && ( (this.getEmail()==castOther.getEmail()) || ( this.getEmail()!=null && castOther.getEmail()!=null && this.getEmail().equals(castOther.getEmail()) ) );
- return new EqualsBuilder().append(this.name, castOther.getName())
- .append(this.addr, castOther.getAddr())
- .append(this.email, castOther.getEmail()).isEquals();
- }
- public int hashCode() {
- int result = 17;
- // result = 37 * result + ( getAddr() == null ? 0 : this.getAddr().hashCode() );
- // result = 37 * result + ( getName() == null ? 0 : this.getName().hashCode() );
- // result = 37 * result + ( getEmail() == null ? 0 : this.getEmail().hashCode() );
- return new HashCodeBuilder().append(this.getName()).append(this.getAddr()).append(this.getEmail()).toHashCode();
- }
- }
xml 代码
- <hibernate-mapping>
- <class name="User" table="user" catalog="tie">
- <composite-id >
- <key-property name="addr" type="string">
- <column name="addr" length="45" />
- key-property>
- <key-property name="name" type="string">
- <column name="name" length="45" />
- key-property>
- composite-id>
- <property name="email" type="string">
- <column name="email" length="45" />
- property>
- class>
- hibernate-mapping>
测试下
java 代码
- public void testCase(){
- User user = new User();
- user.setName("mamamm");
- user.setAddr("china beijiing");
- user.setEmail("linweihan@163.com");
- Session session = factory.openSession();
- Transaction tr = session.beginTransaction();
- session.save(user);
- tr.commit();
- session.close();
- }
- public void testRetrieve(){
- User user = new User();
- user.setName("mamamm");
- user.setAddr("china beijiing");
- Session session = factory.openSession();
- user = (User)session.load(User.class, user);
- System.out.println(user.getEmail());
- session.close();
- }
这里重写equals和hascode方法的时候 ,采用了一个第3方的common-lang包.
发表评论
-
多对多双项关联
2007-12-02 16:39 4076数据库中仍然是利用一个中间表 持久化类中,都各自包含对方的集合 ... -
多对多单项关联
2007-12-02 16:02 44891.多对多单项关联 在数据库中多对多的关系,表之间设置一个中间 ... -
一对一关联
2007-12-02 14:13 3629一对一的关联 分为外键关联和主键关联 外键关联:在关系模型的表 ... -
双向的多对一或者双向的一对多
2007-12-02 00:38 3564一对多或者多对一都是从一方来看, 双向是从两个方向来看 这个时 ... -
一对多的另一个问题
2007-12-02 00:19 3320如果email 的一方设置uid 不能为空的话回报错,所以需要 ... -
做一对多遇到的几个问题(单向)
2007-12-02 00:14 3266java 代码 public class Use ... -
多对一举例(单项的,从一个方向看)
2007-12-01 23:15 3632java 代码 public class Use ... -
hibernate多对一
2007-12-01 22:59 4255处理多对一的时候 感觉关系模型多对一和一对多是一样的 在域模型 ... -
[转]Hibernate中的outer-join(二):fetch
2007-12-01 22:49 4606... -
hibernate中集合排序
2007-12-01 18:49 3686set,map可以支持内存排序和数据库排序 List什么都不支 ... -
[转] hibernate中给集合排序的方法
2007-12-01 18:47 5760<iframe style="MARGIN ... -
[转]集合类型和结果集排序
2007-12-01 18:39 3490言归正传,Hibernate中的Collection类型分为有 ... -
[转]hibernate延迟加载
2007-12-01 18:22 5980hibernate 延迟加载问题探 ... -
[转]主键自动生成办法
2007-12-01 18:11 3415... -
[转]hibernate中的 bag--解释的太好了.
2007-12-01 17:25 20430Bag是集合,与Set不同的是,Bag允许重复的元素, 在Ja ... -
hibernate值类型集合映射之Map
2007-12-01 17:02 2901java 代码 public class Use ... -
hibernate值类型集合映射之List
2007-12-01 16:43 3308java 代码 public class Use ... -
值类型映射---Set(2)
2007-12-01 13:43 3110这里自定义Email类,set里面放的是 email 类,非 ... -
值类型映射---Set(1)
2007-12-01 13:20 3399这里介绍2种不同的域模型的设计, 一种是Set里面装Strin ... -
事务的作用
2007-12-01 12:41 4557事务的作用是为了防止修改数据库, 如果只是查询那么就没必要修改 ...
相关推荐
在使用复合主键的情况下,通常会基于所有构成主键的属性来重写这些方法。 针对`Person`类的实现,我们可以参考以下示例代码: ```java import java.io.Serializable; public class Person implements ...
这篇文档将介绍如何使用Hibernate注解来生成复合主键或嵌入式主键。 复合主键(Composite Key)是指由两个或更多个列共同构成的唯一标识,而嵌入式主键(Embedded Key)则是将主键字段嵌入到实体类内部。在不使用...
**第四部分:Hibernate复合主键** 复合主键在数据库设计中并不罕见,当一个表的主键由两个或更多字段组成时,就需要使用。在Hibernate中,可以使用@EmbeddedId和@IdClass注解来处理复合主键。@EmbeddedId将一个包含...
总结来说,Hibernate的复合主键映射允许我们将由多个属性组成的主键映射到对象上,通过在映射配置文件中使用`<composite-id>`标签,并为每个主键属性创建`<key-property>`。此外,通过创建一个专门的主键类,我们...
4. 复合主键配置:当一个实体的主键由多个属性组成时,可以使用复合主键。直接映射是在hbm.xml文件中直接定义各个属性,间接映射则是通过一个专门的类来表示复合主键,然后在实体类中引用该类。 5. Hibernate的映射...
10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,包括集合映射,如List、Set、Map等,以及复合主键的处理。 11. **继承映射**:在Java中,子类可以继承父类。在Hibernate中,这种继承...
2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4...
Hibernate 的基本映射包括 id 算法、复合主键、数据版本并发性控制等。id 算法可以是整型自增、sql server 等数据库的 identity、Oracle 的 sequence、hilo(高低位)算法、uuid、guid、程序赋值等。复合主键可以...
- 复合主键可以通过`@EmbeddedId`和自定义的复合主键类来实现。 - **映射二级表**: - 使用`@SecondaryTables`和`@SecondaryTable`来指定额外的表。 #### 四、Hibernate独有的注解扩展 Hibernate除了支持标准的...
4. 新的持久化模型:支持复合主键、级联操作等更复杂的持久化模型。 5. 可配置的延迟加载:通过注解可以控制属性或关联关系的延迟加载行为。 四、实战应用 1. 创建实体类:利用@Entity、@Table、@Id等注解创建符合...
Hibernate支持属性映射、类映射、关联映射(一对一、一对多、多对多),以及继承映射和复合主键映射,实现了灵活的数据操作。 5. **Hibernate的使用**:学习Hibernate时,首先需要下载并配置相关库,创建Hibernate...
Hibernate注解是基于Java 5引入的元数据机制,允许在源代码中嵌入元数据信息,用于描述对象如何映射到数据库。例如,`@Entity`注解表示一个类作为数据库中的表,`@Table`定义表名,`@Id`标记主键字段。 2. **实体...
- **2.2.6 映射复合主键与外键** - 使用 `@CompositeId` 和 `@JoinColumns` 来定义复杂的主键和外键映射。 - **2.2.7 映射二级表(secondary tables)** - 有时候需要将实体Bean的部分属性映射到另外一张表上,...
10. **其他高级特性**:包括双向关联的维护、集合的有序性和索引、复合主键的处理、子类继承的映射等。 《Hibernate 中文手册 3.5.2.pdf》、《Hibernate 中文手册 3.2.pdf》和《Hibernate 中文手册 3.1.2.pdf》分别...
`<class>`(表示实体类)、`<id>`(表示主键)、`<property>`(表示普通属性)、`<one-to-one>`(一对一关联)、`<many-to-one>`(多对一关联)、`<set>` 或 `<list>`(多对多关系)、`<key>`(描述外键)、`...
- **复合主键概念**:解释复合主键的概念。 - **映射配置**:讲解如何在映射文件中配置复合主键。 - **示例代码**:给出具体的复合主键配置示例。 以上内容基于提供的文档摘要进行了详细展开,旨在帮助读者深入了解...
- **复合主键**:使用多个字段组合成主键,适用于某些特殊场景。 #### 七、使用JPA注解配置实体类 JPA (Java Persistence API) 是一种Java EE标准,用于管理Java应用中的关系数据。在Hibernate中使用JPA注解可以...
- 实体类的设计与映射,包括属性注解、继承、复合主键等。 - Session和Transaction的使用,事务的隔离级别与回滚规则。 - Criteria API和HQL的查询语法,以及SQL的自定义操作。 - 数据库关系映射,如一对一、一对多...