当前位置:首页 » 数据仓库 » hibernate如何配置
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

hibernate如何配置

发布时间: 2022-03-15 08:06:59

‘壹’ 在hibernate内如何配置一对一的关系

hibernate中实体关系表的配置,一对一关系:
在关系型数据库中存在两种表示一对一关系的设计方式,分别是“主键约束”和“唯一外键约束”。针对这两种不同的设计,在hibernate中有两种配置方法:
首先要明确,这两种设计的实体关系都可以表示为:你中有我,我中有你。也就是说对象关系是一样的
①主键约束
这种设计方式,是A表和B表都有一个相同的主键
比如夫妻关系表,如下:
class Hasband{
private int id;
private String name;
private Wife myWife;
getter和setter
}
以及
class Wife{
private int id;
private String name;
private Hasband myMan;
getter和setter
}
注意设计表的时候,一定要有一个主键
对应的表结构如下:
table t_hasband
t_id int
t_name varchar
以及
table t_wife
t_id int
t_name varchar
在hibernate中的配置则要注意两点,第一:两张表一定要建立级联操作,第二:其中一张表的主键必须有一个class=“foreign”,关键配置如下:
实体A(丈夫):
<one-to-one name="myWife" class="...WifePo" cascade="all"→级联操作></one-to-one>
实体B(妻子):
<id ...>
<generator class="foreign"→表示这个表的主键依赖于另一张表的主键(主键约束)
<para name="property">myMan</para>
</generator>
</id>
<one-to-one name="myMan" class="...Hasband"></one-to=one>
另外,我发现如果在使用Mysql时,在hibernate中设置主键自增时,设成native将会报错,最好使用increment。
②唯一外键约束(注意唯一两字)
对象关系不变
表的建立不一样了,我们用公民与身份证的例子来说明,给公民一个唯一的表示身份证id的标识,,因为是唯一标识,所以建在那张表上没有区别
表结构是:
t_citizen
t_id int primary key
t_name String
t_carId int
以及
t_card
t_id int primary key
t_name string
至于hibernate配置,这种情况可以看做多对一的一种特例;
对公民实体:
<many-to-one name="CitizenPo" class="..." cascade="all"→这里是必须得,因为另一张表依赖于这张表,没有这条会报错。unique="true"→唯一的 column=""/>
对于身份证而言:
<one-to-one name="citizen" class="" property-ref="card"→表明这是通过外键加载
cascade="all" →这句不写 在存身份证表的时候公民表不会更新/>

‘贰’ Hibernate配置

none:不做任何操作

create:启动服务后,先drop删掉表,然后通过映射文件自动创建数据库表,每次启动都会删了表然后重建(当心使用)
create-drop: 也表示创建,只不过再系统关闭前执行一下drop
update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新

‘叁’ hibernate的配置文件

最小必要包为antlr.jar,cglib.jar,asm.jar, asm-attrs.jar, commons-collections.jar, commons-loggins.jar ,encache.jar, dom4j.jar,log4j.jar,jta.jar

Hibernate3.2 核心包作用
包 作用 说明
jta.jar 标准的JTA API 必要
commons-logging.jar 日志功能 必要
commons-collections.jar 集合类 必要
antlr.jar ANother Tool for Language Recognition(antlr) 必要
dom4j.jar XML配置和映射解释器 必要
Hibernate3.jar 核心库 必要
asm.jar ASM字节码库 如果使用“cglib”则必要
asm-attrs.jar ASM字节码库 如果使用“cglib”则必要
ehcache.jar EHCache缓存 如果没有其它的缓存,则它是必要的
cglib.jar CGLIB 字节码解释器 如果使用“cglib”则必要

以下包可选
versioncheck.jar 版本检查
swarmcache.jar
jboss-cache.jar TreeCache
jgroups.jar
xml-apis.jar JAXP API
c3p0-0.9.1.jar C3PO JDBC链接池
connector.jar JCA API
jboss-system.jar 使用TreeCache时必要
jacc-1_0-fr.jar JACC 库
checkstyle-all.jar
junit.jar
javassist.jar Javassist 字节码解释器
ant-lanuncher.jar
jaas.jar JAAS API
jdbc2_0-stdext.jar JDBC扩展API
ant-antlr.jar Ant antlr支持
jboss-jmx.jar
cleanimports.jar cleanimports
xerces.jar SAX parser JDK版本低于1.4时必要
jaxen-1.1-beta-7.jar Jaxen 如果想提高启动性能则去使用
ant-junit.jar Ant junit support
ant-swing.jar ant swing support
ant.jar
proxool.jar Proxool JDBC连接池
concurrent.jar 使用TreeCache需要
syndiag2.jar

你要用什么包,就导什么包.
没有导入JAR包的话,启动服务器的时候会有提示错误信息,找不到JAR包,你再导JAR也可以的.

楼主的这个问题要参考JPA相关知识了.建议你看下JPA的相关资料.
HIBERNATE实际上就是一个JPA的实现框架.

PA不是一种新的ORM框架,它的出现只是用于规范现有的ORM技术,它不能取代现在的HIBERNATE,TOPLINK等ORM框架.相反,在采用JPA开发时,我们仍将用到这些ORM框架,只是此时开发出来的应用不再依赖于某个持久化提供商.应用可以在不修改代码的情况下在任何JPA环境下运行,真正做到低耦合,可扩展的程序设计.
JPA只是一个规范.

那个persistence.xml配置文件,就相当于hibernate的那个配置文件

‘肆’ hibernate的配置与使用方法

hibernate.cfg.xml配置文件中的映射出现错误

‘伍’ Hibernate 环境的配置

把hibernate的jar包(我的是hibernate2.jar,不知道你用的什么版本)复制到tomcat/webapps/你的应用程序/lib文件夹下
然后在classpath中设置一下就可以用了(既然你会用tomcat,这个会吧)

‘陆’ hibernate关系配置

LZ你先把你的问题说清楚啊。
你是先添加好B表的数据,B:column3空着,然后添加A表数据,同时更新B的3.
还是同时更新A,B两个表啊?

‘柒’ hibernate中配置mysql的url如何配置

看看行不

‘捌’ Hibernate如何配置!

查收,

‘玖’ 如何在hibernate配置文件

Hibernate给人的感受是灵活的,要达到同一个目的,我们可以使用几种不同的办法。就拿Hibernate配置来说,常用的有如下三种方式,任选其一。
在 hibernate.cfg.xml 中加入元素 <property>、<mapping>,放置在类路径(classpath)的根目录下。
将 hibernate.properties 放置放在类路径的根目录下。
可编程的配置方式,即在程序中配置Hibernate的启动参数、加载映射文件,需要用Configuration接口来实现这一方式。

使用hibernate.cfg.xml是我比较喜欢的方式,一方面xml天生的优势——良好的可读性,让配置的意图一目了然。另一方面这是官方推荐使用的,如果同时在hibernate.cfg.xml和hibernate.properties对Hibernate进行了配置,那么前者将覆盖后者。

hibernate.properties可以非常的简洁明了,并且有一种linux配置文件的风格。以#开始一行的注释,用键值对的方式存储配置参数。

‘拾’ hibernate4.怎么配置

和hibernate3差不多,只不过没有hibernatetemplate了