hibernate入门案例(初学Hibernate,按照书上编了一个小测试程序,一直报错Configuration cannot be resolved to a type)
本文目录
- 初学Hibernate,按照书上编了一个小测试程序,一直报错Configuration cannot be resolved to a type
- hibernate和ibatis的区别
- 我是初学springMVC,与hibernate一起用,现在遇到以下问题,点击表单提交时就出现这个问题
- 怎么知道hibernate中的众多jar包那个版本和哪个版本是配套的请不要说对初学者没影响
- Hibernate中find方法怎样应用
- 实体层中字段,数据库表中字段,hbm.xml中的property分别是什么关系初学者!!!!!!!
- 谁帮我解释下hibernate中queryDao.queryUnique(hql)含义,初学者
初学Hibernate,按照书上编了一个小测试程序,一直报错Configuration cannot be resolved to a type
import javax.transaction.Transaction; 是不是这个 问题……
hibernate和ibatis的区别
Hibernate的特点: Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。iBATIS的特点: iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合。系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。 对于实际的开发进行的比较: 1. iBATIS需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方很少,而iBATIS要把那些sql mapping的地方一一修改。 2. iBatis 可以进行细粒度的优化 比如说我有一个表,这个表有几个或者几十个字段,我需要更新其中的一个字段,iBatis 很简单,执行一个sql UPDATE TABLE_A SET column_1=#column_1# WHERE id=#id# 但是用 Hibernate 的话就比较麻烦了,缺省的情况下 hibernate 会更新所有字段。 当然我记得 hibernate 有一个选项可以控制只保存修改过的字段,但是我不太确定这个功能的负面效果。 例如:我需要列出一个表的部分内容,用 iBatis 的时候,这里面的好处是可以少从数据库读很多数据,节省流量SELECT ID, NAME FROM TABLE_WITH_A_LOT_OF_COLUMN WHERE ...一般情况下Hibernate 会把所有的字段都选出来。比如说有一个上面表有8个字段,其中有一两个比较大的字段,varchar(255)/text。上面的场景中我为什么要把他们也选出来呢?用hibernate 的话,你又不能把这两个不需要的字段设置为lazy load,因为还有很多地方需要一次把整个 domain object 加载出来。这个时候就能显现出ibatis 的好处了。如果我需要更新一条记录(一个对象),如果使用 hibernate,需要现把对象 select 出来,然后再做 update。这对数据库来说就是两条sql。而iBatis只需要一条update的sql就可以了。减少一次与数据库的交互,对于性能的提升是非常重要。 3. 开发方面: 开发效率上,我觉得两者应该差不多。可维护性方面,我觉得 iBatis 更好一些。因为 iBatis 的 sql 都保存到单独的文件中。而 Hibernate 在有些情况下可能会在 java 代码中保sql/hql。相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。 而iBATIS 的着力点,则在于POJO 与SQL之间的映射关系。也就是说,iBATIS并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。使用iBATIS 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而iBATIS 则要求开发者编写具体的SQL 语句。相对Hibernate而言,iBATIS 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。 4. 运行效率 在不考虑 cache 的情况下,iBatis 应该会比hibernate 快一些或者很多。***隐藏网址***希望对你有帮助...
我是初学springMVC,与hibernate一起用,现在遇到以下问题,点击表单提交时就出现这个问题
呵呵,这个是肯定的啊还有spring代替MVC这说法你自己想出来的吧?呵呵,这个spring不是这样用的如何使用啊?怎么注入。。注入到哪啊?这个就要你重载下hibernateDaoSupport,这样分页就更方便了,还可以用hibernate的方法看这个public class MyHibernateDaoSupport extends HibernateDaoSupport{ @Resource(name="sessionFactory") public void setSuperSessionFactory(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } /** * 使用hql 语句进行分页查询操作 * @param hql 需要查询的hql语句 * @param offset 第一条记录索引 * @param pageSize 每页需要显示的记录数 * @return 当前页的所有记录 */ public List findByPage(final String hql, final int offset, final int pageSize) { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List result = session.createQuery(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }}这个是一个办法,我都这样用,用的是spring2.5,hibernate3.2,如果你用spring2.0你可以把这个换掉@Resource(name="sessionFactory")换成setter方法!其他的就在spirng.xml文件中配置就行整合的时候就extends MyHibernateDaoSupport 这样就行了,这样就可以用分页的方法了,当然上面的方法我自己写的,你也可以自己修改,怎么样写都成!
怎么知道hibernate中的众多jar包那个版本和哪个版本是配套的请不要说对初学者没影响
Hibernate的jar包到官网上一般也是一组下载下的.注意支持的java版本,要和其他的框架组合使用,只能试了才知道.
Hibernate中find方法怎样应用
基于spring的web应用的入门,前端采用Struts MVC框架,中间层采用spring,后台采用Hibernate。 本文包含以下内容: ·配置Hibernate和事务 ·装载Spring的applicationContext.xml文件 ·建立业务层和DAO之间的依赖关系 ·将Spring应用到Struts中 简介 这个例子是建立一个简单的web应用,叫MyUsers,完成用户管理操作,包含简单的数据库增,删,查,该即CRUD(新建,访问,更新,删除)操作。这是一个三层的web应用,通过Action(Struts)访问业务层,业务层访问DAO。图一简要说明了该应用的总体结构。图上的数字说明了流程顺序-从web(UserAction)到中间层(UserManager),再到数据访问层(UserDAO),然后将结果返回。 Spring层的真正强大在于它的声明型事务处理,帮定和对持久层支持(例如Hiberate和iBATIS) 以下下是完成这个例子的步骤: 1. 安装Eclipse插件 2. 数据库建表 3. 配置Hibernate和Spring 4. 建立Hibernate DAO接口的实现类 5. 运行测试类,测试DAO的CRUD操作 6. 创建一个处理类,声明事务 7. 创建web层的Action和model 8. 运行Action的测试类测试CRUD操作 9. 创建jsp文件通过浏览器进行CRUD操作 10. 通过浏览器校验jsp 安装eclipse插件 ***隐藏网址******隐藏网址***3. MyEclipse插件(破解版) 4. Tomcat插件. tanghan 5. 其他插件包括xml,jsp, 数据库建表 create table app_user(id number not null primary,firstname vchar(32),lastname vchar(32)); 新建项目 新建一个web project,新建后的目录结构同时包含了新建文件夹page用于放jsp文件,和源文件夹test用于放junit测试文件。同时将用到的包,包括struts,hibernate,spring都导入到lib目录下。 创建持久层O/R mapping 1. 在src/com.jandar.model下用hibernate插件从数据库导出app_user的.hbm.xml文件改名为User.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" ***隐藏网址***<hibernate-mapping package="com.jandar.model"> <class name="User" table="APP_USER"> <id column="ID" name="id" type="integer" > <generator class="assigned" /> </id> <property column="LASTNAME" length="10" name="lastname" not-null="false" type="string" /> <property column="FIRSTNAME" length="10" name="firstname" not-null="true" type="string" /> </class> </hibernate-mapping> 2. 通过hibernate synchronizer->synchronizer file生成User.java文件,User对象对应于数据库中的app_user表 注:在eclipse下自动生成的对象文件不完全相同,相同的是每个对象文件必须实现Serializable接口,必需又toString和hashCode方法; import java.io.Serializable; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; public class BaseObject implements Serializable { public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } public boolean equals(Object o) { return EqualsBuilder.reflectionEquals(this, o); } public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } } public class User extends BaseObject { private Long id; private String firstName; private String lastName; /** * @return Returns the id. */ public Long getId() { return id; } /** * @param id The id to set. */ public void setId(Long id) { this.id = id; } /** * @return Returns the firstName. */ public String getFirstName() { return firstName; } /** * @param firstName The firstName to set. */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * @return Returns the lastName. */ public String getLastName() { return lastName; } /** * @param lastName The lastName to set. */ public void setLastName(String lastName) { this.lastName = lastName; } } 创建DAO访问对象 1. 在src/com.jandar.service.dao新建IDAO.java接口,所有的DAO都继承该接口 package com.jandar.services.dao; public interface IDAO { } 2. 在src/com.jandar.service.dao下新建IUserDAO.java接口 public interface IUserDAO extends DAO { List getUsers(); User getUser(Integer userid); void saveUser(User user); void removeUser(Integer id); } 该接口提供了访问对象的方法, 3. 在src/com.jandar.service.dao.hibernate下新建UserDAOHiberante.java import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.orm.hibernate.support.HibernateDaoSupport; import com.jandar.model.User; import com.jandar.service.dao.IUserDAO; public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO { private Log log=LogFactory.getLog(UserDaoHibernate.class); /* (非 Javadoc) * @see com.jandar.dao.IUserDAO#getUsers() */ public List getUsers() { return getHibernateTemplate().find("from User"); } /* (非 Javadoc) * @see com.jandar.dao.IUserDAO#getUser(java.lang.Long) */ public User getUser(Integer id) { // TODO 自动生成方法存根 return (User) getHibernateTemplate().get(User.class,id); } /* (非 Javadoc) * @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User) */ public void saveUser(User user) { log.debug("xxxxxxx"); System.out.println("yyyy"); getHibernateTemplate().saveOrUpdate(user); if(log.isDebugEnabled()) { log.debug("userId set to "+user.getId()); } } /* (非 Javadoc) * @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long) */ public void removeUser(Integer id) { Object user=getHibernateTemplate().load(User.class,id); getHibernateTemplate().delete(user); if(log.isDebugEnabled()){ log.debug("del user "+id); } } } 在这个类中实现了IUserDAO接口的方法,并且继承了HibernateDAOSupport类。这个类的作用是通过hibernate访问、操作对象,进而实现对数据库的操作。
实体层中字段,数据库表中字段,hbm.xml中的property分别是什么关系初学者!!!!!!!
hbm.xml把实体类和数据库表关联起来,它是配制实体类的对象对应数据库表中的字段:例: 《class name="com.OA_System.hibernate.bean.OA_DAILY" table="OA_DAILY"》 《id name="OA_DAILY_ID" column="ID" type="long"》 《generator class="sequence"》 《param name="sequence"》nl2_sl《/param》 《/generator》 《/id》 《property name="OA_DAILY_DATES" column="DATES" type="string"》《/property》 《property name="OA_DAILY_ADDRESS" column="ADDRESS" type="string"》《/property》 《property name="OA_DAILY_RPERSON" column="RPERSON" type="string"》《/property》 《property name="OA_DAILY_RWAY" column="RWAY" type="string"》《/property》 《property name="OA_DAILY_GAIYAO" column="GAIYAO" type="string"》《/property》 《property name="OA_DAILY_XIANGXI" type="text"》 《column name="XIANGXI" sql-type="clob"》《/column》 《/property》 《/class》《class》标签中:name="com.OA_System.hibernate.bean.OA_DAILY" 代表实体类路径table="OA_DAILY" 代表数据库中的表《id》标签是配置主件《property》标签是配置各个字段(《id》《property》中:name 一般都是我们实体类的对象名,column 对应数据库字段,type 是对应的类型)
谁帮我解释下hibernate中queryDao.queryUnique(hql)含义,初学者
好久没接触这个了,根据方法名应该是查询一个唯一的对象,所以查询出来的结果是一个Object类型,hql是hibernate的面向对象的查询语言,类似SQL语句,如果不懂语法可以先学习一下。
本文相关文章:
郑州新中软科技有限公司前端面试(接到中软国际科技服务有限公司(北京)面试通知,到鼎桥通信技术有限公司面试硬件测试岗位已通过,怎么样)
2024年10月23日 02:45
complex number(用c#编写一个复数类ComplexNumber并测试其功能,要求能进行复数间的基本数学运算:+)
2024年10月14日 11:35
源代码安全审计工具----找八哥源代码安全测试管理系统?源代码检测软件 漏洞多,开发怎么办
2024年10月6日 02:35
测试工程师招聘要求(纬创资通(昆山)公司校园招聘职位 软硬件测试工程师(QT)怎么还要求无色盲色弱这有关系吗)
2024年9月7日 15:55
html js css测试软件(jmeter是否支持js和css文件的测试)
2024年8月21日 04:10
hibernate入门案例(Hibernate中find方法怎样应用)
2024年8月1日 03:10
帮我分析下我的scmp性格测试结果,懂的来?pcms-egfp 载体是过表达载体吗
2024年7月18日 17:46
python接口自动化测试框架(Python语言的测试开发如何完整学习)
2024年7月18日 13:48
直方图和柱形图一样吗(测试数据分析技术中直方图技术与柱状图技术有什么区别(直方图X轴为定量数据,柱状图X轴为分类数据))
2024年7月17日 08:45
更多文章:
queue可数吗(hair 是可数名词还是不可数名词如何用)
2024年10月18日 10:15
java常见编程笔试题(java 几个基础笔试题,高手帮忙. 最好说一下选择答案的原因)
2024年7月19日 13:41
if与find函数结合(EXCEL表格,IF和FIND函数运用问题)
2024年8月22日 10:15
js字符串indexof(js 怎样查找一个字符串找出所有想要的字符串)
2024年7月21日 08:27
parent属性(5.2.1.5 Excel VBA窗体的Parent和Container属性)
2024年7月17日 11:30
y 2sin3x的反函数怎么求(y=2sin3x的反函数怎么求具体的)
2024年7月19日 23:31
html中的fieldset(求Html语言中的fieldset标签用法,还有请教为什么fieldset不怎么常用)
2024年7月21日 23:26
python培训教材ppt(python实训答辩ppt应该写什么)
2024年7月23日 12:04
自动采集网站php源码(有很多采集功能或插件的文章源码,asp的php的都可,求介绍)
2024年10月5日 23:15
python kivy(Python可以打包Android应用吗)
2024年7月4日 04:14
java解析html内容(java根据url抓取html页面内容,怎么解析chunked 方式)
2024年2月14日 18:00
求把下面的一段话翻译成英文,不要用翻译软件,由于被选为优秀范文,所以翻译要重新弄一个好的,急啊,高分?翻译!!求救!在线上等!
2024年7月24日 12:13
spring实例化bean过程(spring中bean的生命周期是怎么样的)
2024年7月15日 19:17