- 浏览: 333375 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
zhengqiweiyi:
请问这里的客户端和服务器是指同一台电脑上的吗?
JSP动态显示服务器时间和客户端时间 -
18101095336:
一语道破天机[color=blue][/c ...
restlet使用中遇到的一些问题 -
jjjssh:
废话一大堆,就是没说到少了那个jar包
The hierarchy of the type is inconsistent -
junjielee:
重点还没说啊~~~~~~~~
The hierarchy of the type is inconsistent -
幽绿琵琶:
太棒了
loadrunner 9.5 9.0 8.1下载地址 和license
看了很多的书了,想着实践一下,就参考了书上的例子写了一点,呵呵刚入门很简单的东西,只有后台写的测试类而已,还望各位指教。
我的开发环境 Eclipse3.3+Myeclipse6.0,因为Myeclipse集成了Hibernate,而且6.0最高的版本是Hibernate3.1..
数据库是MySql5.0
1.首先建库:
`login`.CREATE DATABASE `login` /*!40100 DEFAULT CHARACTER SET utf8*/;
DROP TABLE IF EXISTS `login`.`person`;
CREATE TABLE `login`.`person` (
`id` varchar(20) character set utf8NOT NULL default '',
`name` varchar(45) character set utf8NOT NULL default '',
`password` varchar(45) character set utf8NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入两条测试数据。
2.打开Myeclipse6.0,添加下载的MySql的驱动,建立数据库的一个连接。
3.新建WEB工程,为工程加入Hibernate支持,注意不建立SessionFactory我们可以自己建立一个,
配置文件如下:
- <?xml version='1.0' encoding='UTF-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <!-- Generated by MyEclipse Hibernate Tools. -->
- <hibernate-configuration>
- <session-factory>
- <property name="connection.username">root</property>
- <property name="connection.url">
- jdbc:mysql://localhost:3306/login
- </property>
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <property name="myeclipse.connection.profile">jnetstore</property>
- <property name="connection.password">sa</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property name="show_sql">true</property>
- <mapping resource="cn/will/vo/Person.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
然后新建POJO类Person.java
代码如下:
- package cn.will.vo;
- public class Person {
- private String id;
- private String name;
- private String password;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
3.新建DAO接口类PersonOperate.java
- package cn.will.dao;
- import java.util.List;
- import cn.will.vo.Person;
- public interface PersonOperate {
- public void insert(Person p) throws Exception;
- public void update(Person p) throws Exception;
- public Person queryById(String id) throws Exception;
- public void delete(Person p) throws Exception;
- public void delete(String id) throws Exception;
- public List queryAll()throws Exception;
- public List queryByLike(String cond)throws Exception;
- }
4.建立工厂类,这里使用了两个工厂,一个是Session工厂SessionFactory.java,一个是操作的工厂DAOFactory.java
- package cn.will.factory;
- import org.hibernate.Session;
- import org.hibernate.cfg.Configuration;
- public class SessionFactory {
- public static Session getSession(){
- Session session=null;
- session =new Configuration().configure().buildSessionFactory().openSession();
- return session;
- }
- }
- package cn.will.factory;
- import cn.will.dao.PersonOperate;
- import cn.will.impl.PersonOperateImpl;
- public class DAOFactory {
- public static PersonOperate getOperate(){
- return new PersonOperateImpl();
- }
- }
5.DAO的实现类PersonOperateImpl.java
- package cn.will.impl;
- import java.util.Iterator;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import cn.will.dao.PersonOperate;
- import cn.will.factory.SessionFactory;
- import cn.will.vo.Person;
- public class PersonOperateImpl implements PersonOperate {
- private Session session=null;
- public PersonOperateImpl() {
- this.session = SessionFactory.getSession();
- }
- public void delete(Person p) throws Exception {
- Transaction tran = this.session.beginTransaction() ;
- // 执行语句
- this.session.delete(p) ;
- // 提交事务
- tran.commit() ;
- }
- public void delete(String id) throws Exception {
- String hql = "DELETE Person WHERE id=?" ;
- Query q = this.session.createQuery(hql) ;
- // 把参数设置
- q.setString(0,id) ;
- // 执行更新语句
- q.executeUpdate() ;
- // 进行事务处理
- this.session.beginTransaction().commit() ;
- }
- public void insert(Person p) throws Exception {
- // 开始事务
- Transaction tran = this.session.beginTransaction() ;
- // 执行语句
- this.session.save(p) ;
- // 提交事务
- tran.commit() ;
- // 关闭Session
- this.session.close() ;
- }
- public List queryAll() throws Exception {
- List l = null ;
- String hql = "FROM Person as p" ;
- Query q = this.session.createQuery(hql) ;
- l = q.list() ;
- return l ;
- }
- public Person queryById(String id) throws Exception {
- Person p = null ;
- // 使用Hibernate查询语言
- String hql = "FROM Person as p WHERE p.id=?" ;
- // 通过Query接口查询
- Query q = this.session.createQuery(hql) ;
- q.setString(0,id) ;
- List l = q.list() ;
- Iterator iter = l.iterator() ;
- if(iter.hasNext())
- {
- p = (Person)iter.next() ;
- }
- return p ;
- }
- public List queryByLike(String cond) throws Exception {
- List l = null ;
- String hql = "FROM Person as p WHERE p.name like ?" ;
- Query q = this.session.createQuery(hql) ;
- q.setString(0,"%"+cond+"%") ;
- l = q.list() ;
- return l ;
- }
- public void update(Person p) throws Exception {
- // 开始事务
- Transaction tran = this.session.beginTransaction() ;
- // 执行语句
- this.session.update(p) ;
- // 提交事务
- tran.commit() ;
- }
- }
6.打开DB Browser窗口,找到第二步建立的数据库连接,找到login数据库,找到person表,右键选择Hibernate Reverse Engineering,在Hibernate Mapping file(*.hbm.xml) for each database table前打勾,在java package选择存放路径,这里选择cn.will.vo,下一步,ID generater选择assigned,下一步,完成.得到person.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="cn.will.vo.Person" table="person" catalog="login">
- <id name="id" type="java.lang.String">
- <column name="id" length="20" />
- <generator class="assigned" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="name" length="45" not-null="true" />
- </property>
- <property name="password" type="java.lang.String">
- <column name="password" length="45" not-null="true" />
- </property>
- </class>
- </hibernate-mapping>
7.加入测试类TestPersonOperate.java,代码如下:
- package cn.will.test;
- import java.util.Iterator;
- import java.util.List;
- import cn.will.factory.DAOFactory;
- import cn.will.vo.Person;
- public class TestPersonOperate {
- /**
- * @param args
- */
- public static void main(String[] args)throws Exception {
- // TODO Auto-generated method stub
- /*按ID查询
- Person p = new Person() ;
- p=DAOFactory.getOperate().queryById("will");
- System.out.println(p.getName()) ;
- */
- /*插入数据
- Person p=new Person();
- p.setId("aaa");
- p.setName("aaa");
- p.setPassword("aaa");
- DAOFactory.getOperate().insert(p);
- */
- /*查询所有
- Person p=new Person();
- List list=null;
- list=DAOFactory.getOperate().queryAll();
- Iterator iter=list.iterator();
- if(iter.hasNext())
- {
- p=(Person)iter.next();
- System.out.println(p.getName());
- }
- */
- /*模糊查询
- Person p=new Person();
- List list=null;
- list=DAOFactory.getOperate().queryByLike("wi");
- Iterator iter=list.iterator();
- if(iter.hasNext())
- {
- p=(Person)iter.next();
- System.out.println(p.getName());
- }
- */
- }
- }
8.运行..进行如下查询时可以正确执行得到预期结果.
总结:本人因为是初学所以难免又不对的地方,这是我按照自己的理解写的,希望和大家共同学习,希望..
- MyH.rar (4.8 MB)
- 描述: 代码
- 下载次数: 26
发表评论
-
ConcurrentHashMap的高性能
2012-07-17 18:11 1478ConcurrentHashMap 是一个并发散列映射表 ... -
Hash散列及冲突解决
2012-07-17 17:56 2734先看看英文的维基百科上的解释: A hash func ... -
调用谷歌接口实现基站转经纬度
2012-07-02 15:34 6565Cell2GPSUtil.java,最近项目中用到的,记录一下 ... -
JSP动态显示服务器时间和客户端时间
2012-05-22 16:29 6409server-time.jsp内容如下: <%@ pa ... -
使用Spring3.0的AOP结合log4j实现接口方法执行时间记录
2012-05-18 14:30 6455项目使用RPC提供的内部服务,需要监控每个接口方法的调用情况以 ... -
禁止浏览器缓存当前文档内容
2011-06-08 17:21 1640IE8的设置中有这么一个选项: 默认是“自动 ... -
java正则匹配微博@和话题#话题#
2011-05-26 11:46 7947/** * 微博内容中的at正则表达式 ... -
restlet使用中遇到的一些问题
2011-02-22 17:37 18700x20 is not a legal NCName cha ... -
spring 2.5.6和hibernate3.2.2集成(5)
2010-02-08 15:48 1964这一次说一下hibernate tools这个工具的使用,OR ... -
spring 2.5.6和hibernate3.2.2集成(4)
2010-02-04 16:41 2763这个列子的来源是springside下的miniweb项目,算 ... -
spring 2.5.6和hibernate3.2.2集成(3)
2010-02-04 16:10 1756最近看了一下springside,学习很多,从思想到编码风格, ... -
spring 2.5.6和hibernate3.2.2集成(2)
2010-02-04 15:52 1337上一篇文章写了如何使用spring的注解,这一篇记录一下和hi ... -
spring 2.5.6和hibernate3.2.2集成(1)
2010-02-04 15:33 1278spring注解的使用,这个例子来源于网上,我也不知道原创是哪 ... -
The project was not built since the source file could not be read
2010-01-25 10:25 3809包缺失 重新加入JRE System Library 类 ... -
The hierarchy of the type is inconsistent
2010-01-22 10:02 14837这两天在尝试spring2.5.6和hibernate3.2的 ... -
activemq-5.3集成spring2.5以及quartz的调用
2010-01-06 10:42 1488前几天做的demo,记录一下,希望对大家有帮助,内容均参考网上 ... -
Dom4j的使用,存着以后看
2008-12-05 10:21 1100Dom4j的使用(全而好的文 ... -
JVM中的堆和栈
2007-12-29 16:19 2240JVM是基于堆栈的虚拟机. ... -
Struts2.0上传练习
2007-11-09 16:09 6780终于上次的项目告一段落了,可以重新学习Struts了,于是终于 ... -
struts2.0使用时的一个奇怪的问题
2007-10-21 22:31 1074近来struts2.0很流行哦,于是下了更流行的max大侠的教 ...
相关推荐
### Struts+DAO+Hibernate实现用户登录功能 #### 一、项目概述 本文将详细介绍如何使用Struts+DAO+Hibernate框架来实现一个基于MySQL数据库的用户登录系统。该系统不仅能够处理用户的登录验证,还能根据登录结果...
在项目源代码目录中创建四个包:`po`(持久化对象)、`dao`(数据访问对象)、`service`(业务逻辑层)以及`action`(Struts的Action)。 #### 三、模型层开发 ##### 1. 构建实体类 在`po`包中创建`User`类: ```...
在本篇文章中,我们将深入探讨如何使用Struts框架结合DAO(Data Access Object)设计模式以及Hibernate ORM(Object Relational Mapping)技术实现一个完整的用户登录系统。这个系统不仅能够有效地处理用户的登录...
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init...
在Spring配置文件中,需要定义Hibernate SessionFactory Bean以及相关的DAO Bean: ```xml <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <value>User....
<bean id="hibernateConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath:hibernate.properties <!-- 创建SessionFactory --> ...
### Struts2 + Spring2 + Hibernate3 整合实例源码分析 #### 一、概述 随着企业级应用的发展,为了提高开发效率和系统维护性,越来越多的项目开始采用MVC设计模式。其中,Struts2作为MVC框架中的佼佼者,在前端...
DAO层中,使用Hibernate的Session对象进行CRUD(创建、读取、更新、删除)操作。 最后,别忘了在Struts2的配置文件(struts.xml)中定义Action的配置,包括结果类型、执行方法等,以便Struts2知道如何转发请求到对应...
2. **Hibernate Session Factory**:Spring通过SessionFactoryBean创建SessionFactory实例。 3. **Persistence Abstraction**:Spring JDBC或HibernateTemplate封装了数据库访问,简化DAO(Data Access Object)层...
- 在`applicationContext.xml`中配置数据源、Session Factory等。 - 示例代码如下: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" ...
《深入理解HibernateDAO的写法》 在Java企业级开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而HibernateDAO则是基于Hibernate进行数据访问的对象,是业务逻辑层和持久层之间...
- **清晰性**:文件命名采用统一的前缀,比如以`applicationContext-`开头,后面跟上具体的模块名(如`action`、`dao`等),使得配置文件结构更加清晰。 #### 二、配置示例解析 **2.1 Struts与Spring集成** 在...
选择相应的配置,指定Spring配置文件,设置SessionFactory ID,选择之前配置的数据源,输入Bean Id(如:dataSource),选择DBDriver,并提供Hibernate Session Factory类的包名。 完成上述步骤后,项目框架基本...
- **DAO 层**:负责数据访问操作。 - **使用注解**:如 `@Repository`、`@Transactional`。 ##### VI.B 服务层 - **业务逻辑**:封装业务处理逻辑。 - **事务管理**:确保数据一致性。 ##### VI.C 事务管理 在 ...
spring.jpa.hibernate.cache.region.factory_class=org.hibernate.cache.redis.hibernate5.SingletonRedisRegionFactory ``` 4. **实体类注解**: 对于需要缓存的实体类,可以使用`@Cacheable`、`@CacheEvict`等...