- 浏览: 153058 次
- 性别:
- 来自: 球面世界
最新评论
-
zhang_yi_yi:
...
Java常用方法使用心得 -
yeshuang:
不错,希望以后多多介绍一些
Java常用方法使用心得 -
tiansong163:
我用这个怎么不行呢?
jsp实现文件下载与中文文件名乱码问题解决 -
lshhjxlj:
Yes,it very good!
Java常用方法使用心得 -
jaja_jaja:
有错误,web.xml里少了servlet-mapping部分 ...
对log4j初始化并设置log文件的存放路径
最近实现了Spring2.0 Hibernate3.2 Hibernate Annotation 3.3 GenericDao 整合实现
用起来还是很顺手的
代码给出如下
java 代码
- package cn.feigme.model;
- /**
- * @author Feigme
- *
- */
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
- import javax.persistence.Table;
- /**
- * 用户.带jpa annotation简版配置.
- */
- @Entity
- @Table(name = "User")
- public class User {
- private Integer id;
- private String username;
- private String password;
- private String email;
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
Hibernate Annotation减少了XML文件,配制起来也非常方便
java 代码
- package cn.feigme.dao;
- import java.io.Serializable;
- public interface IGenericDao<T, PK extends Serializable> {
- PK save(T newInstance);
- T find(PK id);
- void update(T transientObject);
- void delete(T persistentObject);
- }
基于jdk5.0特性的 generic dao 可以减少很多dao重复编码
java 代码
- /**
- * GenericDaoHibernateImpl.java
- * cn.feigme.dao.impl
- * @author Feigme
- * 2007-8-26
- */
- package cn.feigme.dao.impl;
- import java.io.Serializable;
- import cn.feigme.dao.IGenericDao;
- /**
- * @author Feigme
- *
- */
- public abstract class GenericDaoHibernateImpl<T, PK extends Serializable> extends BaseDao implements IGenericDao<T,PK> {
- private Class<T> persistentClass;
- /*@SuppressWarnings("unchecked")
- public GenericDaoHibernateImpl(Class<T> t) {
- this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
- .getGenericSuperclass()).getActualTypeArguments()[0];
- }*/
- public GenericDaoHibernateImpl(Class<T> t){
- this.persistentClass = t;
- }
- public Class<T> getPersistentClass() {
- return persistentClass;
- }
- public void delete(T persistentObject) {
- this.getHibernateTemplate().delete(persistentObject);
- }
- @SuppressWarnings("unchecked")
- public T find(PK id) {
- return (T) this.getHibernateTemplate().get(getPersistentClass(), id);
- }
- @SuppressWarnings("unchecked")
- public PK save(T newInstance) {
- return (PK)this.getHibernateTemplate().save(newInstance);
- }
- public void update(T transientObject) {
- this.getHibernateTemplate().update(transientObject);
- }
- }
generic dao的实现类,注意他的构造函数
java 代码
- /**
- * UserDao.java
- * cn.feigme.dao
- * @author Feigme
- * 2007-8-27
- */
- package cn.feigme.dao;
- import cn.feigme.model.User;
- /**
- * @author Feigme
- *
- */
- public interface UserDao extends IGenericDao<User,Long> {
- }
UserDao 就非常简单了,继承GenericDao就可以了,如果多的方法,直接写在这个dao中,
java 代码
- /**
- * UserDaoImpl.java
- * cn.feigme.dao.impl
- * @author Feigme
- * 2007-8-27
- */
- package cn.feigme.dao.impl;
- import cn.feigme.dao.UserDao;
- import cn.feigme.model.User;
- /**
- * @author Feigme
- *
- */
- public class UserDaoImpl extends GenericDaoHibernateImpl<User, Long > implements UserDao {
- /**
- * 必须要有空构造函数
- */
- public UserDaoImpl() {
- super(User.class);
- }
- }
这里有一点也是要特别注意的,至少我测试时出了些问题
java 代码
- package test;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import cn.feigme.dao.UserDao;
- import cn.feigme.model.User;
- public class Mytest {
- private UserDao dao;
- @Before
- public void setUp() throws Exception {
- String[] config = new String[] {
- "spring/applicationContext.xml",
- "spring/dataAccessContext-hibernate.xml",
- "spring/serviceContext.xml"};
- ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
- dao = (UserDao) ctx.getBean("userDao");
- }
- @After
- public void tearDown() throws Exception {
- }
- @Test
- public void save() {
- User u = new User();
- u.setUsername("feigme is me");
- u.setEmail("feigme@163.com");
- dao.save(u);
- }
- }
这就是简单点的测试类,整合时一定要把 jar包找齐,网上别人提供的很多例子都是不完全的,所以还是要多看看
包中的文档啊!
评论
6 楼
peijunlin2008
2010-02-23
把源代码发出来,学习一下!
5 楼
feigme
2008-01-31
这个是jdk5.0有的特性,泛型要用到的
4 楼
javado
2007-12-29
T 和里面的PK是什么啊?
3 楼
feigme
2007-09-08
全部都是从Eclipse中拷过来的,并且测试过了
当然借鉴了网上的资料
不过代码部分都是自己写的哈
当然借鉴了网上的资料
不过代码部分都是自己写的哈
2 楼
bulargy
2007-09-05
我日,还你以为你代码都是原创的,说几天不见功力大增,搞了半天好多都是贴的。日日日!!!
1 楼
bulargy
2007-09-05
这个好东东!
发表评论
-
Maven2上路
2008-06-24 21:49 2811虽然公司仍然使用ant,但自己还是尝试使用了下Maven2 网 ... -
Properties读取类
2007-12-12 22:44 3400一个properties常用类,以前收藏的 java 代码 ... -
对log4j初始化并设置log文件的存放路径
2007-12-12 22:32 10490利用servlet初始化时配置log的存放位置 java 代码 ... -
Eclipse常用快捷键(收藏)
2007-12-10 14:43 1526Eclipse常用的快捷键 Ctrl+1 快速修复(最经典的快 ... -
Java常用方法使用心得
2007-12-10 14:29 9218不断完善中ing . . . java. ... -
一个通用时间类
2007-12-10 14:14 1343引自:http://www.busfly.cn/post/ja ... -
HashCode 理解测试
2007-11-01 14:15 1663java 代码 public class Has ... -
BIRT之使用历程
2007-10-26 16:13 6248BIRT的易使用性及强大,成为项目的首选 在download. ... -
[转]一个泛型Hibernate DAO实现
2007-10-20 10:03 7404java 代码 package sgf4web. ... -
试刀——DynamicProxy
2007-10-07 00:53 1268Dynamic Proxy是这样一种class:它是在运行时生 ... -
spring_hibernate_annotation的三种实现
2007-08-23 15:21 1709xml 代码 <!--第一种 ====== ... -
一个动态的model
2007-08-10 11:17 1202java 代码 import java.uti ... -
让人迷糊的interface和abstract
2007-08-10 09:57 1270最近在做公司的一个项 ... -
jdk5.0 新用法
2007-08-03 19:40 1375JDK5.0 有SuppressWarnings,De ... -
用jsp写的日历
2007-07-16 14:38 1534觉得日历不应该要那么麻烦 为什么发上来的代码那么难看。。。只能 ... -
分页公用类PaginationSupport
2007-07-11 10:32 3791最近看了 robbin等大侠写 ... -
好文章锦集
2007-07-03 21:56 1052dao + hibernate 设计 http://www.i ... -
解决web开发中的中文问题
2006-08-09 09:41 1203这段时间经常看到有人问到web开发中怎么中文总是?号。原因其实 ... -
jsp实现文件下载与中文文件名乱码问题解决
2006-08-10 16:36 5071之前,写过一个Download.jsp文件,可以解决下载文件乱 ... -
struts 实现文件上传与下载
2007-04-18 19:13 3510/****************************** ...
相关推荐
spring加入hibernate annotation方式第一部分,需要其他部分请查看本人其他资源
spring+hibernate annotation 完整示例,带数据库脚本 mysql,tomcat,myeclipse项目
jquery easyUI+struts2+spring+hibernate基于annotation实现的CRM
SSH2 annotation 实现struts2.1.6 spring2.5.6 hibernate3.3 全注解开发 hibernate延迟加载_懒加载 具体应用
hibernate annotation spring 中文参考文档
使用spring和hibernate的Annotation的小项目,帮助新手理解annotation
spring ,hibernate ,flex 应用注释配置的一个例子,里面有数据库脚本和说明文件
JSF+Spring+Hibernate(Annotation)的login小实例,建议入门的朋友看看,老鸟就免了,呵呵。环境:SQLSever2000+jdk5.0+spring2.0+hibernate3.2+jsf
struts2 spring2.5 hibernate3.0 annotation 整合
SpringMVC Spring Hibernate 框架整合 Annotation Maven Project
struts2+spring+hibernate(实现XML和Annotation两种方式操作数据库) 项目描述: 框架及版本:struts2 + spring3.0 + hibernate3.3 所实现的功能说明 把两个对象存入到数据库中 1、一种方法采用XML文件映射的方式 2...
spring3、 hibernate4 配置声明式事务管理(annotation方式)
springmvc + hibernate annotation 配置
Struts2+Spring2+Hibernate3+Annotation所需JAR包
spring3,hibernate4 配置声明式事务管理(annotation方式)
使用Maven3.0.5, Struts2, Spring, Hibernate3, annotation实现零配置的开发框架.里面有详细的开发指导文档, 后台用googlecode的 hibernate-generic-dao - Generic DAO 和 Search的代码,完全进行封装. 由于Generic ...
NULL 博文链接:https://hyj0903.iteye.com/blog/709898
csh框架+cxf+spring+hibernate+mysql 注解 annotation xml json, 参考了菠萝大象的文章,感谢。
struts2+spring2+hibernate3 Annotation整合例子
下载后请修改数据库用户名和密码,即springAnnotation-hibernate.xml文件 案例系统支持功能如下: 注册功能,身份证,邮箱,手机号,姓名等校验,ajax异步获取资源 分页显示,编辑更新,多行删除等更功能,使用了MVC...