- 浏览: 64011 次
- 性别:
- 来自: 武汉
最新评论
-
武大鹏程加内特:
武大鹏程加内特 写道任雅菲 写道
3Q 呵呵
你QQ多少? ...
第十一章 MyEclipse自动生成映射文件(上) -
武大鹏程加内特:
zzy90718 写道
第九章 Spring配置数据连接池 -
武大鹏程加内特:
任雅菲 写道
3Q 呵呵
第十一章 MyEclipse自动生成映射文件(上) -
武大鹏程加内特:
任雅菲 写道
第十一章 MyEclipse自动生成映射文件(上) -
任雅菲:
第十一章 MyEclipse自动生成映射文件(上)
文章列表
选中必要的选项
选择主键生成的策略:
设置类名与数据库的对应关系
点击完成,然后回到MyEclipse视图即可看到生成的文件.
这里我们用到了源目录,所以生成的文件会放在src目录下,还是需要我们手动将生成的类文件与映射文件放到model目录下
设置数据库连接
转换视图
创建新的数据库连接
设置数据库连接的属性值
填写正确信息以后,点击完成即可.
生成配置文件
首先建立好WEB工程,并且将包层次建立好.
在工程中加入Hibernate的包
首先选中你的工程,加入Hibernate的库
添加Hibernate的jar包到自己的工程:
选择Hibernate.cfg.xml配置文件存放的地方:
告诉配置文件连接数据库的信息:
告诉Hibernate工具类放在哪里:
生成工具类后,需要将getSession这个方法中的实现获取方式改成sessionFactory.getCurre ...
Inverse的作用
我们还是拿上一章的班级与学生的示例来说明问题,
请看下面的代码:
Student student1 = new Student("张三");
Student student2 = new Student("李四");
MyClass myClass = new MyClass("java0801");
Set<Student> students = myClass.getStudents();
students.add(student1);
students.add(student2);
myClas ...
级联开关
1.级联是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作;
2.级联配置通过cascade属性实现;
3.cascade属性有四种取值:
all:所有操作都执行级联操作;
none:所有操作都不执行级联操作;
save-update:保存和更新时执行级联操作;
delete:删除时执行级联操作;
4.通过级联操作可以解决持久化对象不能直接引用瞬时对象的问题。
如果支持多种级联,可以这样设置 cascade=” save-update, delete”
cascade并不局限于使用哪个标记上,得活学活用
A:
Myclas ...
多对多
什么情况下会出现多对多呢?比如学生选课就会出现多对多的情况,那么我们在数据库层面是怎么解决这种问题的呢,通常会有三张表,
学生表
ID 学生姓名
1 张三
2 李四
3 王五
课程表
ID 课目名
1 Java
2 SQL
3 JavaScript
学生_课程表
ID 学生ID 课目ID
1 2 1
2 2 3
3 3 2
4 3 1
5 1 1
6 1 2
7 1 3
那么从学生_课程的表中我们只需要知道学生ID,或者科目ID,便可以清楚的查询出每个学生选修的科目,以及指定的科目被哪些学生选修了.
那么这种情况反映到Hibernate中呢,是怎么对应呢?
在Hiberna ...
什么时候采用一对一关系映射呢?
比如我们有时在网上注册的时候,用户名,密码,邮箱必填,然后提供了一个复选框,可以选填用户的详细资料.那么如果在数据库中, 我们通常会建两张表,如下:
但是在Hibernate中会怎么实现这个呢,大家过细观察一下,会不会觉得这个外键有点多余,如果我们让从表的ID和主表的ID一样,即让从表的ID即是主键又是外键,会不会更好呢,Hibernate中就是这样实现一对一的关系的.
那么下面请看具体代码:
我们将利用自动创建SQL的特点来建表,我们就不需要建表了,只需要建立类,关联类之间的关系就可以了.
UserBase:
public class UserBase ...
一对多的关系
在学生与班级对象模型中,通常多个学生实体对应一个班级,反过来,一个班级对应多个学生.
一对多的关系在数据库层面没有任何变动,还是两张表,学生表与班级表,学生表中有一个外键引用班级表的主键.
建立两张表students, myClass
students
CREATE TABLE `students` (
`id` varchar(32) NOT NULL,
`name` varchar(20) default NULL,
`age` int(11) default NULL,
`birthday` date default NULL,
`cla ...
今天我们讲多表操作,
多对一的关系
何为多对一呢?
示例:
学生模型中,一般有班级和学生两个实体,
通常多个学生实体对应一个班级
这种关系在数据库是怎么对应的?
在数据库是通过外键来关联这种关系的.
通常我们会在学生表中加入一个字段,来引用斑级表的主键ID.
建立两张表students, myClass
students
CREATE TABLE `students` (
`id` varchar(32) NOT NULL,
`name` varchar(20) default NULL,
`age` int(11) default NULL,
`birthday` ...
current_session_context_class的作用
Hibernate官方原文如下:
The hibernate.current_session_context_class configuration parameter defines which
org.hibernate.context.CurrentSessionContext implementation should be used. Note that for backwards
compatibility, if this config param is not set but a org.hibernate.t ...
Hibernate中对增删改查的小结
mysql中库表News,字段如下
id | int | auto_increment | primary key
title | varchar
content | varchar
date | varchar
1:Hibernate的insert操作
Session session = HibernateSessionFactory.getSession();
News news = new News();
news.setContent( ...
Generator 主键生成器
increment
用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。
identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返 ...
Generator 主键生成器
increment
用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。
identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返 ...
如果是WEB工程,我们只需要将这些包复制到lib目录下即可,如果是Java工程,那这里我们就需要建一个User lib库,将这些jar包添加到我们的UserLib库,然后将Userlib库加入到我们的工程即可,注意一点,我们这里因为用到了SQLServer2005数据库,故 ...
Spring的JDBC模板技术
首先,我们回顾一下我们以前的JDBC操作需要的几个步骤:
DbManager:
getConnection():负责获取数据库连接对象
closeConnection:负责关闭数据库的连接对象
Dao层
我们以insert操作为例子
public int insertNews(News news) {
Connection conn = null;
CallableStatement proc = null;
int backVal = 0;
conn = DbManager.getConnection();
try {
proc ...