当前位置:首页 » 操作系统 » hibernate映射数据库

hibernate映射数据库

发布时间: 2022-05-27 19:06:28

1. Hibernate根据映射文件生成数据库

这个是可以的,主外键会自动建立。
但是一般都不这么做,hibernate配置文件生成的数据库是很难把握的,除非这个项目很简单或者你是一个专家级的人物。
我自己的看法是这个是得不尝失,还不如先er图,逻辑图,物理图,再转成数据库表来得实在。

2. Hibernate的类型怎样映射数据库中字段的自定义类型

在hibernate的xml映射文件中可以配置实体属性与数据库字段间的对应关系。如下:
<property name="salary" precision="2" scale="10" length="255"
column="salary" type="string" update="true" insert="true"
lazy="false" unique="false" not-null="false">
</property>

3. 如何使用Hibernate来对数据库表做映射

添加Hibernate的
org
建表
创建一个工程
通过eclipse来浏览数据库
窗口---》视图---》其它---》DBbrowser
在相应的DB浏览窗口里新建一个数据库连接
新建一个Hibernate配置文件
产生相应的影射文件和DAO类
写一个测试类来测试对表的数据的增删改查操作

4. 在HIbernate中,实体类如何映射到数据库

是通过映射文件来映射的。举个简单的例子,例如我有个Teacher实体类(某教学管理系统老师用户):
private Integer id; //编号
private String name; //姓名
private String password; //密码
private Date createDate; //创建日期
同时,我创建了数据表TEACHER:
create table teacher( id number(9) primary key, --编号 name varchar2(20), --姓名 password varchar2(20), --密码 create_date date --创建日期 );
这时,怎么关联它们呢?通过加载hibernate框架,我们就可以使用映射文件来关联实体类和数据库了
文件名:Teacher.hbm.xml(必须与实体类名字一致)
内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools-->
<hibernate-mapping>
<class name="com.yss.Teacher" table="TEACHER" schema="WZM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="9" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="20" />
</property>
<property name="createDate" type="java.util.Date">
<column name="CREATE_DATE" length="7" />
</property>
</class>
</hibernate-mapping>
当然,这只是比较简单的映射,还有什么多对多,一对多等映射,并且映射时如何设置以达到需要的效果,这些你可以在网上搜索相关资料自行查看。

5. 如何理解hibernate中的关系映射

对象关系映射orm,就是为了解决面向对象与面向关系数据库不匹配现象的技术。简言之,orm是通过使用
描述对象和数据库之间的映射的元数据,将Java程序中的对象自动持久到关系数据库中。换言之,就是将数据从一种形式转换到另一种形式。
我下面就举几个例子你就明白了:
1、一对一,比如一个表的字段有100多个,而且其中有40个其他表可能有用,那么你把这个表拆分成两个表,并且两个表中的数据都是一条记录对应一条记录,某一个表中存放另一个对应表的id用来维护两个记录之间的关系,因为本来这两条记录原来就是一条记录,不知道这么说你能明白吗?
2、一对多,如:部门表与用户表,一个部门是不是有多个用户,但是一个用户有且只有一个部门,很清晰了吧
3、多对一,相当于吧部门表与用户表打颠倒
4、多对多,其实就是一对多与多对一结合起来实现的关系,如用户表与权限表,一个用户有多个权限,而一个权限同时对应多个用户,两个结合起来就是多对多
5、单向双向只是hibernate的概念,比如你这两个表A---表B,这样通过表A来维护表B的数据,但是表B不能维护表A,这就是单项,双向现在应该就好解释了,通过两个表都可以相互管理对方的数据。书面点,单项就是由父类管理关联关系,子类无法管理,双向父类子类都可管理。
hibernate提出的这些关系都有相应的配置,其实这些关系在数据库中一直是存在的,只是hibernate对这些关系都通过不同的配置实现,单向和双向也有相应的配置,这些功能当然也可以不通过hibernate配置实现,自己在代码中维护这块关系也可以,单双向,数据库中没有类似相关概念,hibernate提出这块功能,我们可以通过配置完成他们的限制功能。

6. hibernate 字段类型和数据库字段 怎样映射

这个 按照我的理解
首先自定义注解要有自己的编译解释方法的
在这个便已解释方法中估计需要连接数据库(当然最基本的jdbc什么的)
当然连接数据库什么的涉及到配置文件
通过jdbc获取到数据库信息 把注解中的参数与数据库中的信息关联(简单的就可以存成List<Map等方式)由于注解的参数一般是类名。你可以 用反射的方式或其他方式(比如字节码什么的)来处理获取类的属性
然后 我感觉关联完了 就没啥然后了 感觉主要是在注解的编译解释方法中做写东西 当然 提高效率也可以用数据库连接池什么的

7. 数据库表在两个数据库中,怎么进行hibernate映射呢

前提是你数据源配置正确.
映射文件中:
注意看class属性:
name是你的model类(包名+类名)
table是你数据库里的表名
catalog是你的数据库名
<hibernate-mapping>
<class name="com.cwx.model.Xsb" table="XSB" schema="dbo" catalog="XSCJ">
......
</class>
</hibernate-mapping>

8. 用hibernate做课程设计中,各个实体类和数据库表的映射关系。

创建数据库
选择开始菜单中→程序→【Management
sql
Server
2008】→【SQL
Server
Management
Studio】命令,打开【SQL
Server
Management
Studio】窗口,并使用Windows或
SQL
Server身份验证建立连接。
在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。
执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。
在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。
切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到【文件组】页,在这里可以添加或删除文件组。
完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。

9. hibernate怎样映射mysql数据库

在实体类中定义的id的类型是字符串,那么在映射文件中该如何进行设置呢?
<id name="teacher_id">
<generator class="native"/>
</id>

10. hibernate映射数据库表如何使表中字段默认值生效

解决方法:
在hibernate映射文件对数据库表的描述中,在当前字段处加入insert="false"语句,这时hibernate在进行插入操作时,只会为那些有实值的字段赋值,而值为空白的字段就会使用数据库表中定义的默认值了。

举例说明,表person:

CREATETABLEaddress(
i_idint(11)NOTNULLauto_increment,
c_addressvarchar(100)NOTNULLdefault'中国',
PRIMARYKEY(id)
)
address.hbm.xml:
<hibernate-mappingpackage="cn.com.lough.model">
<class
name="address"
table="address"
lazy="false"
>
<metaattribute="sync-DAO">true</meta>
<cacheusage="read-write"/>
<id
name="IId"
type="integer"
column="i_id"
>
<generatorclass="native"/>
</id>
<property
name="C_Address"
column="c_address"
type="string"
not-null="false"
length="128"
/>
</hibernate-mapping>
运行程序
publicregAddress(Stringa){//传入的值a未在网页文本框里获得任何值(家庭地址)
Addressp=newAddress();
p.setAddress(a);
HiFactory.save(p);
}
此时hibernate生成的sql语句为insertintoperson(c_address)values('');
数据库表结果为
i_idc_address
1null
修改address.hbm.xml为:
<hibernate-mappingpackage="cn.com.lough.model">
<class
name="Address"
table="address"
lazy="false"
>
<metaattribute="sync-DAO">true</meta>
<cacheusage="read-write"/>
<id
name="IId"
type="integer"
column="i_id"
>
<generatorclass="native"/>
</id>
<property
name="C_Address"
column="c_address"
type="string"
not-null="false"
length="128"
insert="false"
/>
</hibernate-mapping>
再次运行程序,此时hibernate生成的sql语句为insertintoaddress()values();
热点内容
安卓打字声音怎么关 发布:2024-10-28 01:16:30 浏览:673
自然语言处理的算法 发布:2024-10-28 01:08:38 浏览:417
linux软连接和硬链接的区别 发布:2024-10-28 01:02:38 浏览:613
asp数据库封装 发布:2024-10-28 00:54:52 浏览:948
python类是什么 发布:2024-10-28 00:48:05 浏览:377
android添加资源 发布:2024-10-28 00:47:53 浏览:107
传奇脚本编写 发布:2024-10-28 00:44:56 浏览:198
大华摄像头nas服务器地址 发布:2024-10-28 00:44:13 浏览:903
安全门密码锁上三个小孔是什么 发布:2024-10-28 00:36:12 浏览:352
myeclipse反编译插件在线安装 发布:2024-10-28 00:19:08 浏览:480