设为首页 加入收藏

TOP

通向架构师的道路(第二十一天)万能框架spring(三)之SSH(二)
2018-03-16 08:47:24 】 浏览:557
Tags:通向 架构 师的 道路 二十一 万能 框架 spring SSH
;>true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.connection.autocommit">true</prop> </props> </property> </bean> </beans>

<property name=”packagesToScan”value=”org.sky.ssh.dao.impl.*.*” />

这句就是代表所有的hibernate的sessionFactory自动被注入到我们的myssh工程的dao层中去,即在dao层中我们只要通过BaseHibernateDaoSupport.getSession()就可以进行相关的hibernate的数据库操作了.

我们还注意到了在src/main/resources/spring/hibernate/hibernate.xml文件中有这样的hibernate的model的映射:

<property name="annotatedClasses">
   <list>
	<value>org.sky.ssh.model.TLogin</value>
	<value>org.sky.ssh.model.TStudent</value>                                                       
   </list>
</property>

这就是基于annotation的jpa的hibernate的model层的写法,这边的几个<value>括起来的东西就是一个个java的.class,这些java文件都是基于jpa的annotation写法。

当然,如果表结构简单,你可以直接手写这些java类,但是如果一个表结构很复杂,几十个字段主键还有组合主键这样的形式存在,那么手写这个jpa就会变得有点困难。

一般我们在开发项目时都是通过先建表,再建类的,对吧?

因此在这里我们其实是可以借助相关的工具通过数据库表来生成我们的hibernate的这些model类的。

利用eclipse从表逆向生成java的jpa(hibernate)类

准备工做

1.       必须要有eclipse3.7及升级后的database, jpa feature,如:eclipse wtp版

2.       建立数据源

根据下面操作,请切换到j2ee视图,然后先打开datasource explorer窗口

下一步

点右上面这个黑白色(黑白配,男生女生配,啊我呸!)的圆形pie一样的这个按钮

填入自定义的oracledriver名

点JARList这个tab(需要加载一个oracle的driver,即ojdbc6.jar)

 

可以去oracleclient端安装的路径的jdbc\lib中找到该JAR,注意上图中两个红圈处标出的路径与jar名

点OK返回下面这个对话框

填入servername, username, password等信息,你懂的(别忘了勾上save password)

选TestConnection

点OK,NEXT, FINISH完成

看,这边一下子把所有的schema都列出来了,但是我们知道oracle的schema就是username,因此我们用bookstore(这个只是示例,这边因该用你连接数据库的username)的schema只需要显示bookstore的相关数据库object就够我们用了。

看,右键点击你的connection选Properties然后在下面的对话框中选DefaultSchema Filter

在上面的对话框中把Disablefilter放开,然后在Startswith the characters填入你的oracle用户名(schema名),必须大写。

点OK

返回后右键点connection选Refresh,看,是不是只列出来就是你要的东西了(相当于pl/sql里从all objects切换成my objects)

这个东西还可以在没有安装oracle客户端的情况下,拿ECLIPSE来当oracle的客户端用。

建立JPA(Hibernate)工程

在hibernate3里我们把hibernate的annoation方式称为全注解即JPA,因此我们不需要使用hibernate3以前的那种xml文件的配置的方式。

新建JPA工程

这边我们使用的工程名为myssh_model

工程名起名规范,比如说你的工程叫MyProject,那么你的HIBERNATE是ForMyProject工程的,因此你的hibernate即JPA工程就应该叫MyProject_model

根据上图勾选后NEXT,NEXT到下面这一步(千万不要手快然后直接去点那个FINISH按钮啊,我们还没完呢)

根据上图勾选

点FINISH

在弹出框时选Yes

生成的JPA工程

右键单击工程,在JPATools里选GenerateEntities from Tables,这个你懂的。。。

下面,灵的东西要来了。。。

点一下Connection下的这个有“黄色铰链”的按钮(connection),这时下方的下拉列表会显示你当前的jpa工程使用的dbconnection中的Table,看到米有?

注意,把这个Updateclass list in persistence.xml去掉,因为我们用的是纯annotation,不希望再用xml配置方式了,要不然生成出来的工程会出错的,点Next

如果表与表之间有foreignkey的关系,它都能帮你识别出来

Next

保持所有的CLASS的主键为none,我们在后面为每个表分别指定主键的形势,因为有些主键是用的是sequence,有的主键是要通过界面手输进来的,不是sequence,有的主键甚至是复合主键。

别忘了把package填上,注意package的命名规范(规则)养成良好习惯

点NEXT

下面为每个CLASS指定主键的生成方式。

对于T_LOGIN表来说我们的PK让它保持为默认。

对于T_STUDENT表来说,我们的主键是用一个oracle的 sequence来生成的,这个oracle的sequence命为:

因此当你为一个jpa指定了sequence的PK时,在做插入动作时,该表的PK会自动从在这一步指定的sequence中去读取nextval值,相当于执行了一步:select  SEQ_STUDENT_NO.nextval

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL分页优化中的“INNER JOIN方.. 下一篇Java 8 和 Java 9 中并发工具的改..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目