配置hibernate-distribution-3.6.6.Final时出现的问题及解决办法
Hibernate3.6(开发必看)
1.Java对象持久化概述1.1.应用程序的分层体系结构1.1.1.基于B/S的典型三层架构说明:1,展现层:提供与用户交互的界面。
2,业务逻辑层:实现各种业务逻辑。
3,数据访问层:负责存放和管理应用程序的持久化业务数据。
1.1.2.数据访问层与Hibernate在Java应用程序中的角色数据访问层(持久化层)封装了数据访问的细节,为业务逻辑层提供了面向对象的API。
完善的持久化层应该达到的目标:1,代码重用性高,可完成所有的数据访问操作。
2,如果需要的话,能够支持多种数据库平台。
3,具有相对独立性,当持久化层变化时,不会影响上层实现。
在数据访问层(持久化层)中可以使用Hibernate框架以实现要求,如下图所示:1.2.软件模型1.2.1.各种模型的说明概念模型:模拟问题域中的真实实体。
描述每个实体的概念和属性及实体间关系。
不描述实体行为。
实体间的关系有一对一、一对多和多对多。
关系数据模型:在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。
有以下内容组成:1,若干表2,表的所有索引3,视图4,触发器5,表与表之间的参照完整性域模型:在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。
组成部分:1,具有状态和行为的域对象。
2,域对象之间的关联。
域对象(domain object):构成域模型的基本元素就是域对象。
对真实世界的实体的软件抽象,也叫做业务对象(Business Object,BO)。
域对象可代表业务领域中的人、地点、事物或概念。
域对象分为以下几种:1,实体域对象:通常是指业务领域中的名词。
(plain old java object,简单Java 对象)。
2,过程域对象:应用中的业务逻辑或流程。
依赖于实体域对象,业务领域中的动词。
如发出订单、登陆等。
3,事件域对象:应用中的一些事件(警告、异常)。
1.2.2.域对象间的关系关联:类间的引用关系。
以属性定义的方式表现。
依赖:类之间访问关系。
hibernate的基本用法
hibernate的基本用法Hibernate是一个开源的Java框架,用于简化数据库操作。
它为开发人员提供了一个更加简单、直观的方式来管理数据库,同时也提高了应用程序的性能和可维护性。
本文将逐步介绍Hibernate的基本用法,包括配置、实体映射、数据操作等。
一、配置Hibernate1. 下载和安装Hibernate:首先,我们需要下载Hibernate的压缩包并解压。
然后将解压后的文件夹添加到Java项目的构建路径中。
2. 创建Hibernate配置文件:在解压后的文件夹中,可以找到一个名为"hibernate.cfg.xml"的文件。
这是Hibernate的主要配置文件,我们需要在其中指定数据库连接信息和其他相关配置。
3. 配置数据库连接:在"hibernate.cfg.xml"文件中,我们可以添加一个名为"hibernate.connection.url"的属性,用于指定数据库的连接URL。
除此之外,还需要指定数据库的用户名和密码等信息。
4. 配置实体映射:Hibernate使用对象关系映射(ORM)来将Java类映射到数据库表。
我们需要在配置文件中使用"mapping"元素来指定实体类的映射文件。
这个映射文件描述了实体类与数据库表之间的对应关系。
二、实体映射1. 创建实体类:我们需要创建一个Java类,用于表示数据库中的一行数据。
这个类的字段通常与数据库表的列对应。
同时,我们可以使用Hibernate提供的注解或XML文件来配置实体的映射关系。
2. 创建映射文件:可以根据个人喜好选择使用注解还是XML文件来配置实体类的映射关系。
如果使用XML文件,需要创建一个与实体类同名的XML文件,并在其中定义实体类与数据库表之间的映射关系。
3. 配置实体映射:在配置文件中,我们需要使用"mapping"元素来指定实体类的映射文件。
Hibernate学习笔记
Hibernate项目的构建与配置1.在项目里倒入Hibernate所必须的Jar包(1)Hibernate框架可以使用在任何的Java项目里,并不一定是Web项目。
只需要在项目里倒入Hibernate所必须要使用的jar包就可以了。
(2)在Hibernate的官网下载hibernate-release-4.2.2.Final.zip解压,要使用Hibernate必须导入的jar包就在目录“hibernate-release-4.2.2.Final\lib\required”下。
倒入此路径下的所有jar包就可以了。
2.配置hibernate.cfg.xml文件(1)配置hibernate.cfg.xml文件可以参考“\project\etc”目录下的hibernate.cfg.xml文件与hibernate.properties文件。
(2)使用Hibernate连接MySQL的hibernate.cfg.xml配置文件如下:<hibernate-configuration><session-factory>(设置显示Hibernate产生的SQL语句)<property name="show_sql">true</property>(设置MySQL的SQL语法的方言)<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>(设置MySQL的驱动程序)<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>(设置MySQL的数据库路径、用户名、密码)<property name="hibernate.connection.url">jdbc:mysql:///java</property><property name="ername">root</property><property name="hibernate.connection.password">lizhiwei</property>(设置当数据库要保存的表不存在时,就新建表)<property name="hibernate.hbm2ddl.auto">update</property>(设置对象与数据库表的关系映射文件)<mapping resource="vo/User.hbm.xml"/></session-factory></hibernate-configuration>(3)此配置文件一般放在项目的src目录下。
hibernate配置
目录
1 Hibernate概述 2 第一个Hibernate程序 3 Hibernate的配置文件 4 深入理解持久化对象 5 Hibernate的映射文件 6持久化对象 如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录
脱管对象 如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原 因,PO实例脱离了Session 的管理
Hibernate全面解决方案架构解释
事务(Transaction) 代表一次原子操作,它具有数据库事务的概念 但它通过抽象,将应用程序从底层的具体的JDBC、JTA和CORBA 事务中隔离开。 一个Session 之内可能包含多个Transaction对象。 所有的持久化操作都应该在事务管理下进行,即使是只读操作。
管态,对该对象操作无须锁定数据库,不会造成性能的下降。
持久化对象的状态迁移
持久化实体: 1、Serializable save(object obj) 将对象变为持久化状态 2、void persist(object obj) 将对象转化为持久化状态 3、Serializable save(object obj,object pk) 将obj对象转化为持久化状态,该对象保存到数据库,指定主键值 4、void persist(object obj,object pk) 也加了一个设定主键
Hibernate工作原理
Configuration cfg = new Configuration().configure();
开始
启动hibernate
构建Configuration 实例,初始 化该实例中的所有变量
struts2+spring3+hibernate整合教程
Struts2+Spring3+hibernate3整合(2011年7月末,最新)上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。
想了想,我没老婆,难道没什么好写了!不难…献给我暗恋过的每一个女人!(嘿嘿…)如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!一,需要的框架包二,建立project,添加相应的.jar文件(重点)1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。
2,src中创建需要的类,这里以一个域模型为user的例子说明。
(现在建立这些类,可以方便我们在搭建时候随时测试!)User.javaIUserDao.javaUserDaoImpl.javaIUserService.javaUserServiceImpl.java3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。
4,拷贝spring运行中需要的其他jar文件,主要是mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。
ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar包)iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。
5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。
Eclipse下配置和使用Hibernate Tools
Eclipse下配置和使用Hibernate Tools文章分类:Web前端关键字: hibernate tools eclipse 插件配置Hibernate Tools可以通过访问已经建立好的数据库以反向工程方式生成POJO文件。
今天就来说一下如何使用Hibernate Tools来生成POJO。
1、首先,要去Hibernate的网站下载这个工具包。
一个大约14M的ZIP压缩文件。
/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R200810311334.zip2、解压缩下载好的文件,释放出features和plugins这两个文件夹和其中的内容。
完成后将这两个文件夹复制到Eclipse的目录下(这两个文件夹在Eclipse中是默认存在的,直接复制就行了)。
3、到这步为止HibernateTools的安装就算结束了,下面开始配置和具体使用。
一开始选择工程下的SRC 目录,然后右键New->Other->Hibernate->Hibernate Configuration File(cfg.xml),在弹出的窗口中选择Next ,进入到下面的选项中。
注意,这个地方有几项是一定要填写的。
他们分别是Database dialect(数据库方言)、Driver class(数据库驱动)、Connection URL(链接字符串)以及Username和Password(访问数据库的用户名和密码)。
上图图中使用的是MySQL5数据库的配置,vane是我机器中已经创建好的数据库。
使用其他数据库的时候会略有不同。
填好之后选择Finish。
4、选择Eclipse的下拉菜单Window->Show View->Other->Hibernate->Hibernate Configurations,现在就可以查看Hibernate的配置窗口了。
jersey+spring+hibernate配置
3.3. 创建 Hibernate 配置文件 hibernate.cfg.xml
如果在src/resource目录下面建立,需要把resource目录作为源代码路径,目的 是使applicationContext.xml可以输出到WebRoot\WEB-INF\CLASSES目录下面;
第 6 页 共 11 页
Hibernate.cfg.xml配置文件的内容如下:
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "/hibernate-configuration3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/test</property> <property name="ername">root</property> <property name="connection.password">123123</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 显示SQL语句 --> <property name="show_sql">true</property> <!-- 根据需要自动创建数据表 --> <property name="hbm2ddl.auto">update</property> <!-- 指定连接池最小、最大连接数 --> <property name="hibernate.c3p0.min_size">1</property> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定连接池连接的超时时长 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 指定连接池最大缓存多少个statement对象 --> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">true</property> <!-- 对象与数据库表格映像文件 --> <mapping resource="com/pakko/bus/domain/User.cfg.xml" /> </session-factory> </hibernate-configuration>
有关Hibernate3.3.2与3.6.10与4.1.10测试
有关Hibernate3.3.2与4.1.10测试
编辑人:星辰樱
1、建立起测试环境
首先导入测试所必需的JAR,必需的JAR包括(Hibernate3和lib\required下的所有JAR,同时还有导入相应版本slf4j-nop.jar。
Hibernate3.3.2所对应的是slf4j-nop-1.5.8.jar。
Hibernate3.6.10对应的是slf4j-nop-1.6.1.jar。
Hibernate4只需要导入lib\required下所有的JAR 就可以了。
)我们可以分别自定义三个版本的Hibernate JAR库,如图
第二个把JAR库导入项目,选择自定义的JAR库
最后导入数据库的JAR库。
2、编写测试代码
编写测试代码可以根据Hibernate的说明文档写非常的容易,要注意的是Hibernate的说明文档目前只有英文的。
1.首先我们在数据库中建立一张测试用的表,最好是简单,有主键。
2.建立一个实体类与表中的字段最好是相同,不同也行。
3.创建配置文件(hibernate.cfg.xml).
4.创建实体类与表的映射文件与实体类最好放在一起(UserBean.hbm.xml)。
5.编写测试类(Test)。
这是对Hibernate3的常规测试类。
这是对Hibernate4.1.10编写的测试类
为什么要分两个测试类,其实对Hibernate4也可以用Hibernate的测试类,当我们用Hibernate 的JAR库时,你们会看见有一句代码被线上了删除线,加上了删除线表示这个方法是过时
了的,所以最好是采用新的方法。
Struts2+Spring3+Hibernate3 集成方法
Struts2+Spring3+Hibernate3 集成 目 录 1.Struts2集成 ..................................................... 11.1. 把Struts提供的jar包拷贝到/WEB-INF/lib/目录下 (1)1.2. 在web.xml中配置Struts的过滤器 (2)2.Struts2开发 ..................................................... 22.1 编写Struts Action程序,需要继承ActionSupport (2)2.2 创建struts.xml的Action映射文件 (3)3.Struts2+Spring集成 .............................................. 33.1 按第1步“Struts2集成”方法集成Struts2 (3)3.2 再把Struts的Spring插件把拷贝到/WEB-INF/lib/目录下 (3)3.3 把Spring提供的jar拷贝到/WEB-INF/lib/目录下 (3)3.4 web.xml配置Spring的过滤器 (3)3.5 创建applicationContext.xml配置文件 (4)4.Struts2+Spring+Hibernate集成 ..................................... 54.1 先按照“Struts2+Spring集成”方法执行 (5)4.2 导入Apache Commons几个jar包 (5)4.3 导入Hibernate几个jar包 (5)4.4 数据库的JDBC驱动 (5)4.5 在applicationContext.xml中加入如下的配置 (5)4.6 创建hibernate.cfg.xml文件 (6)5.Struts2+Spring+Hibernate开发 ..................................... 65.1 编写Model类 (6)5.2 编写Model类的HBM映射文件 (7)5.3 在applicationContext.xml中指定HBM映射文件路径 (8)5.4 编写DAO接口和实现类程序,并继承HibernateDaoSupport (8)5.5 在applicationContext.xml中配置DAO Bean (10)6.注意事项 ....................................................... 101. Struts2集成1.1.把Struts提供的jar包拷贝到/WEB-INF/lib/目录下Struts需要如下几个包:解压:struts-2.2.3.1-lib.zip需要:struts2-core-2.2.3.1.jarxwork-core-2.2.3.1.jarognl-3.0.1.jarfreemarker-2.3.16.jarjavassist-3.11.0.GA.jar和所有以“commons-”开头的包。
hibernate最精细总结 java
Hibernate总结注:重点讲解关联映射总结人:张焕邮箱:zhang343489603@欢迎交流讨论。
目录1)核心接口简介2)Hibernate版本更新情况3)Hibernate关联映射4)简单属性查询5)Hibernate与延迟加载6)hibernate 中Criteria 的使用介绍7) Hibernate程序性能优化Hibernate优点:1、封装了jdbc,简化了很多重复性代码。
2、简化了DAO层编码工作,使开发更对象化了。
3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。
4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。
所以说它是一个轻量级框架。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web 应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
1)核心接口简介:Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。
这6个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
下面对这6个核心接口分别加以介绍。
Session接口Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
)。
但需要注意的是Session对象是非线程安全的。
同时,Hibernate的session不同于JSP应用中的HttpSession。
hibernate配置文件说明
create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。会导致数据库表数据丢失。
create-drop: 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
(2)hibernate.show_sql打印所有的SQL语句到控制台,可以通过设置org.hibernate.SQL类的日志策略到DEBUG级,实现同样的效果。取值 true|false。
(3)hibernate.format_sql 格式化SQL语句在打印到控制台或写入日志文件时。取值true|false。
hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCacheProvider
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
# 二级缓存配置文件
#Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。
hibernate.jdbc.batch_size=50
#设置外连接抓取树的最大深度取值. 建议设置为0到3之间
#hibernate.max_fetch_depth
#是否显示最终执行的SQL(开发环境)
hibernate.show_sql=false
# 格式化显示的SQL
hibernate.format_sql=false
# 如果设置为true,Hiberante将为SQL产生注释,这样更利于调试。默认值为false。取值为true|false。
Hibernate_映射配置文件详解
Prepared by TongGang
hibernate.cfg.xml的常用属性
• • • • • • • • • connection.url:数据库URL ername:数据库用户名 connection.password:数据库用户密码 connection.driver_class:数据库JDBC驱动 show_sql:是否将运行期生成的SQL输出到日志以供调试。取 show_sql 值 true | false dialect:配置数据库的方言,根据底层的数据库不同产生不 dialect 同的sql语句,Hibernate 会针对数据库的特性在访问时进行 优化。 hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据 hbm2ddl.auto 库模式。取值 create | update | create-drop resource:映射文件配置,配置文件名必须包含其相 mapping resource 对于根的全路径 connection.datasource :JNDI数据源的名称
• Class:定义一个持久化类 Class: • name (可选): 持久化类(或者接 (可选): 持久化类( 可选 口)的类名 • table (可选 - 默认是类的非全限 (可选 定名): 定名): 对应的数据库表名 • discriminator-value (可选 - 默 discriminator(可选 认和类名一样): 认和类名一样): 一个用于区分不 同的子类的值,在多态行为时使用。 同的子类的值,在多态行为时使用。 它可以接受的值包括 null 和 not null。 null。
Prepared by TongGang
Hibernate基础知识详解
Hibernate基础知识详解<hibernate-mapping><class name="*.*.*" table="t_customer" catalog="***"><id name="id" column="c_id"><generator class="identity"/></id><property name="name" column="c_name" length="20"/><set name="orders" inverse="false" cascade="save-update"><key column="c_customer_id"/></set></class></hibernate-mapping>(1)统⼀声明包名,这样在<class>中就不需要写类的全名。
(2)关于<class>标签配置name 属性:类的全名称table 表的名称,可以省略,这时表的名称就与类名⼀致catalog 属性:数据库名称可以省略.如果省略,参考核⼼配置⽂件中 url 路径中的库名称(3)关于<id>标签,<id>是⽤于建⽴类中的属性与表中的主键映射。
name 类中的属性名称column 表中的主键名称 column 它也可以省略,这时列名就与类中属性名称⼀致length 字段长度type 属性指定类型<generator>它主要是描述主键⽣成策略。
SSH整合常见错误
spring+hibernate出错小结:(1)ng.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext原因:出现这错误时,请更改hibernate的包,更新至最新或3.1以上(2)ng.NoClassDefFoundError: javax/transaction/TransactionManager原因:缺少jta.jar 或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name,password) values (?,?)]; nested exception is java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml 工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springframework.orm.hibernate3.HibernateQueryException: undefined alias原因:在spring配置文件中,可能你设置了<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>,指定了HQL的解释器,请删除或更改另一个解释器org.hibernate.hql.ast.ASTQueryTranslatorFactory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
no columns to generate for classwriter
no columns to generate for classwriter 《nocolumnstogenerateforclasswriter》是指在使用Java语言开发时,可能会遇到这样的错误提示,意味着在类编写器中没有要生成的列。
这个错误提示通常出现在Java项目中,尤其是在使用Hibernate框架时。
在本文中,我们将探讨这个错误提示的原因,以及如何解决它。
Java类编写器是一个工具,用于生成Java类的代码。
在Hibernate框架中,它通常用于生成映射类的代码,这些类与数据库表中的列相对应。
当我们使用Hibernate框架时,我们需要告诉编写器应该生成哪些列,以便映射到数据库表中的列。
如果编写器没有收到任何有关要生成哪些列的信息,它就会显示“no columns to generate for classwriter”错误提示。
那么,这个错误提示可能由哪些原因引起呢?首先,它可能是由于我们没有正确地配置Hibernate框架造成的。
在Hibernate框架中,我们需要使用一个名为“hibernate.cfg.xml”的配置文件来配置框架。
如果这个文件中没有正确指定要映射的表和列,编写器就无法生成代码。
其次,这个错误提示还可能是由于我们的Java类没有正确地继承Hibernate框架中的类造成的。
在Hibernate框架中,我们需要使用一些特殊的类来继承我们的Java类,以便将其映射到数据库表中的列。
如果我们没有正确地继承这些类,编写器就无法生成代码。
那么,如何解决这个错误提示呢?首先,我们需要检查我们的Hibernate框架配置文件,确保它正确地指定了要映射的表和列。
如果我们对Hibernate框架不熟悉,可以参考官方文档或者搜索互联网上的教程来学习如何正确配置框架。
其次,我们需要确保我们的Java 类正确地继承了Hibernate框架中的类。
如果我们不确定如何继承这些类,可以参考官方文档或者搜索互联网上的教程来学习如何正确地使用这些类。
hibernate.hbm.xml配置详解
Hibernate中hbm.xml配置说明。
在Hibernate中,各表的映射文件….hbm.xml可以通过工具生成,例如在使用MyEclipse开发时,它提供了自动生成映射文件的工具。
配置文件的基本结构如下:Xml代码1<?xml version="1.0"encoding='UTF-8'?>23<!DOCTYPE hibernate-mapping PUBLIC4"-//Hibernate/Hibernate Mapping DTD 3.0//EN"5"/hibernate-mapping-3.0.dtd">6<hibernate-mapping package="包名">7<class name="类名"table="表名">8<id name="主键在java类中的字段名"column="对应表中字段"type="类型">9<generator class="主键生成策略"/>10</id>1112……13</class>14</hibernate-mapping>1. 主键(id)Hibernate的主键生成策略有如下几种:1) assigned主键由外部程序负责生成,在save() 之前指定。
2) hilo通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。
3) seqhilo与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的Sequence,适用于支持Sequence 的数据库,如Oracle。
4) increment主键按数值顺序递增。
系统架构设计师(高级)复习精华[绝对精品]
2017系统架构:系统架构师是怎样炼成的坦率的讲,除了少数对开发程序极其热爱并愿意为之奋斗终身的编程者来说,对于大多数开发人员,写代码只是他们未来获得职业提升的一个必不可少的积累阶段,在做开发的时间里,他们会积极学习各种知识,经验,培养自己的商业头脑,包括扩展自己各方面的资源,这些积累会为他们未来成为管理者或创业打下牢固的基础。
成为架构设计师是广大开发者职业发展道路之一,架构师究竟是个什么样的职业?需要具备什么基本能力?如何才能成为一个优秀的架构设计师以及架构设计师需要关注哪些容?针对有关问题,本期我们为您采访了(微软认证专家,系统分析员,希赛顾问团顾问,中国计算机学会会员) 友邦,他会就相关问题与大家分享他的看法。
“在我工作的六年多时间里,除了第一年是纯粹编码以外,其余时间都在做和架构设计有关的工作,当然也还一直在写各种各样的代码。
”友邦认为架构设计可能看起来很神秘,新入门或没有架构设计经验的程序员刚开始的时候会有种不知所措的感觉,但其实架构设计是件很容易的事,它只是软件系统开发中的一个环节而已,整个软件系统的开发和维护以及变更还涉及到很多事情,包括技术、团队、沟通、市场、环境等等。
同时,友邦表示,虽然架构设计是件容易的事情,但也不是大多数没有架构设计经验的程序员想象中的画画框图那么简单。
把几台服务器一摆,每一台服务器运行什么软件分配好,然后用网络连接起来,似乎每个企业级应用都是如此简间单单的几步。
但现实生活中的软件系统实实在在可以用复杂大系统来形容,从规划、开发、维护和变更涉及到许许多多的人和事。
架构设计就是要在规划阶段都把后面的事情尽量把握进来,要为稳定性努力,还要为可维护性、扩扩展性以及诸多的性能指标而思前想后。
除了技术上的考虑,还要考虑人的因素,包括人员的组织、软件过程的组织、团队的协作和沟通等。
另外,架构设计还需要方法论的指导。
友邦强调,这些方法论的思路包括,至上而下的分析,关注点分离,横向/纵向模块划分等。
Hibernate报错大全
(1):ng.ClassCastException:ng.Integer cannot be cast to org.hibernate.classic.Session报错原因:已经打开的Session强转创建对象Session调.Save()方法造成的。
解决方法:直接点方法,或者赋值后再调.Save()方法。
(2)org.hibernate.hql.ast.QuerySyntaxException:AUCTIONUSER is not mapped.[FROM AUCTIONUSER WHERE USERNAME=:USERNAME AND USERPASSWORD=:USERPASSWORD]报错原因:在Hibernate中使用Query是对象不是数据库中的表名,是实体类名解决方法:修改HQL语句表名为实体类名(3)ng.NullPointerException报错原因:空指针一般是空对象未实例化造成的解决方法:找到对象高度值的状态值是否为Null(4)javax.el.ELException:Cannot convert0of type class ng.Long to class ng.Boolean报错原因:Integer和Bool类型转换失败解决方法:修改类型统一(5)org.hibernate.exception.SQLGrammarException:could not get next sequence value报错原因:Oracle数据库中创建没有序列解决方法:去数据库中创建序列(6)org.hibernate.exception.LockAcquisitionException:Cannot open connection报错原因:Oracle服务没有启动解决方法:启动Oracle服务就搞定(7)org.hibernate.exception.GenericJDBCException:Could not execute JDBC batch updateCaused by:java.sql.BatchUpdateException:ORA-12899:列"AUCTION"."AUCTIONUSER"."USERPOSTNUMBER"的值太大(实际值:16,最大值:6)报错原因:插入数据与数据库约束不符解决方法:检查插入数据与数据库约束是否一致、是否是非法数据(7)org.hibernate.hql.ast.QuerySyntaxException:unexpected token:*near line1,column8[select*from com.bdqn.entity.Auction]报错原因:HQL语句错误*解决方法:检查HQL语句(8)Exception in thread"main" org.hibernate.PropertyAccessException:exception setting property value with CGLIB(set e_reflection_optimizer=false for more info) setter of com.bdqn.entity.Emp.setComm报错原因:解决方法:把实体类中的int改成Integer double改为Double (9)Caused by:org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions(1)are: PropertyAccessException1: org.springframework.beans.MethodInvocationException: Property'driverClassName'threw exception;nested exception is ng.IllegalStateException:Could not load JDBCdriver class[oracle.jdbc.OracleDriver]报错原因:找不到oracle架包解决方法:加载oracle架包。
Hibernate常见错误
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:213)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
... 3 more
Caused by: java.sql.BatchUpdateException: ORA-00904: "JD_NAME": 标识符无效
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10070)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果我们使用了Annotation,要获得SessionFactory必须以下这样写(hibernate3.6以前)
Configuration cfg=new AnnotationConfiguration();
SessionFactory s=cfg.configure().buildSessionFactory()
You can download SLF4J bindings from the project download page.
大意是org.slf4j.impl.StaticLoggerBinder 无法载入到内存,原因是没有找到合适的绑定SLF4J,需要添加所列举的包中的某一个。
解决方法如下:
Exception in thread "main" ng.NoClassDefFoundError: javax/persistence/Cacheable
at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:988)
hibernate3.6Final的Annotation来实现实体类与数据库表的映射关系2010-11-15 21:01:36| 分类: 编程相关 | 标签:hibernate annotation 类库 cfg configuration |字号大中小 订阅 .
最近在学பைடு நூலகம்hibernate3.6时遇到的一些问题,记录一下自己解决异常的方法,留待以后参考。
如果我们使用了Annotation,要获得SessionFactory必须以下这样写(hibernate3.6以前)
Configuration cfg=new AnnotationConfiguration();
SessionFactory s=cfg.configure().buildSessionFactory()
在hibernate3.6final以前,在hibernate中使用Annotation,还需要下载Annotation库。hibernate的core类库与Annotation类库默认是分开的,当我们要是使用Annotation时,还需添加ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar添加到classpath中。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
问题的原因是无法找到org.slf4j.impl.StaticLoggerBinder,我找了一下,确实没有该类,网上搜了一下下面是官方的解答/codes.html#StaticLoggerBinder:
在hibernate3.6final以前,在hibernate中使用Annotation,还需要下载Annotation库。hibernate的core类库与Annotation类库默认是分开的,当我们要是使用Annotation时,还需添加ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar添加到classpath中。
hibernate3.6Final的Annotation来实现实体类与数据库表的映射关系2010-11-15 21:01:36| 分类: 编程相关 | 标签:hibernate annotation 类库 cfg configuration |字号大中小 订阅 .
最近在学习hibernate3.6时遇到的一些问题,记录一下自己解决异常的方法,留待以后参考。
而hibernate3.6final,已经把Annotation类库集成到了hibernate3.6。当我们想使用Annotation时,下载hibernate3.6final,不再需要下载hibernate-annotations-3.4.0.GA.zip了。
刚开始的时候,我使用hibernate3.6按着以前的版本那样添加了所有类库,后来就出现了以下异常:
This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.
而hibernate3.6final,已经把Annotation类库集成到了hibernate3.6。当我们想使用Annotation时,下载hibernate3.6final,不再需要下载hibernate-annotations-3.4.0.GA.zip了。
刚开始的时候,我使用hibernate3.6按着以前的版本那样添加了所有类库,后来就出现了以下异常:
Exception in thread "main" ng.NoClassDefFoundError: javax/persistence/Cacheable
at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:988)
下载slf4j-nop.jar,添加到路径中,就解决问题了