文档库 最新最全的文档下载
当前位置:文档库 › 修改Hibernate注释乱码

修改Hibernate注释乱码

修改Hibernate注释乱码
修改Hibernate注释乱码

找到插件的\plugins\org.jboss.tools.hibernate4_0_3.5.1.v20130102-1835-H100-Final.jar包,pojo\PojoFields.ftl

<#-- // Fields -->

<#foreach field in pojo.getAllPropertiesIterator()><#if pojo.getMetaAttribAsB ool(field, "gen-property", true)> /** *//**

<#if pojo.hasMetaAttribute(field, "field-description")>

${pojo.getFieldJavaDoc(field, 0)}

<#foreach column in field.columnIterator><#if https://www.wendangku.net/doc/4115897687.html,ment?exists && col https://www.wendangku.net/doc/4115897687.html,ment?trim?length!=0> * ${https://www.wendangku.net/doc/4115897687.html,ment}.

*/

${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${f https://www.wendangku.net/doc/4115897687.html,}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitializatio n(field, jdk5)};

pojo\PojoPropertyAccessors.ftl

<#-- // Property accessors -->

<#foreach property in pojo.getAllPropertiesIterator()>

<#if pojo.getMetaAttribAsBool(property, "gen-property", true)>

/**

<#if pojo.hasFieldJavaDoc(property)>

* ${pojo.getFieldJavaDoc(property, 4)}

<#foreach column in property.columnIterator><#if https://www.wendangku.net/doc/4115897687.html,ment?exists & & https://www.wendangku.net/doc/4115897687.html,ment?trim?length!=0> * 取得 ${https://www.wendangku.net/doc/4115897687.html,ment}.

*/

<#include "GetPropertyAnnotation.ftl"/>

${pojo.getPropertyGetModifiers(property)} ${pojo.getJavaTypeName(prop erty, jdk5)} ${pojo.getGetterSignature(property)}() {

return this.${https://www.wendangku.net/doc/4115897687.html,};

}

/**

<#if pojo.hasFieldJavaDoc(property)>

* ${pojo.getFieldJavaDoc(property, 4)}

<#foreach column in property.columnIterator><#if https://www.wendangku.net/doc/4115897687.html,ment?exists & & https://www.wendangku.net/doc/4115897687.html,ment?trim?length!=0> * 设置 ${https://www.wendangku.net/doc/4115897687.html,ment}.

*/

${pojo.getPropertySetModifiers(property)} void set${pojo.getPropertyNa me(property)}(${pojo.getJavaTypeName(property, jdk5)} ${https://www.wendangku.net/doc/4115897687.html,}) { this.${https://www.wendangku.net/doc/4115897687.html,} = ${https://www.wendangku.net/doc/4115897687.html,};

}

org\hibernate\tool\hbm2x\TemplateProducer.java

public void produce(Map additionalContext, String templateName, File destina tion, String identifier, String fileType, String rootContext) {

String tempResult = produceToString( additionalContext, templateName, r ootContext );

if(tempResult.trim().length()==0) {

log.warn("Generated output is empty. Skipped creation for file " + desti nation);

return;

}

FileWriter fileWriter = null;

Writer fileWriter = null;

try {

th.ensureExistence( destination );

ac.addFile(destination, fileType);

log.debug("Writing " + identifier + " to " + destination.getAbsolutePath () );

fileWriter = new FileWriter(destination);

fileWriter = new BufferedWriter(new OutputStreamWriter(new FileOutp utStream(destination), "UTF-8"));

fileWriter.write(tempResult);

}

catch (Exception e) {

throw new ExporterException("Error while writing result to file", e);

} finally {

if(fileWriter!=null) {

try {

fileWriter.flush();

fileWriter.close();

}

catch (IOException e) {

log.warn("Exception while flushing/closing " + destination,e);

}

}

}

}

org\hibernate\tool\hbm2x\jtidy.properties

indent=auto

indent-spaces=4

#indent-attributes=yes

wrap=180

markup=yes

clean=yes

output-xml=yes

input-xml=yes

show-warnings=yes

trim-empty-elements=yes

input-encoding=utf-8

output-encoding=utf-8

连接oracle数据库还需作如下修改:

打开,修改

org\hibernate\cfg\reveng\TableFilter.java增加:

private String comment = "";

public String getComment() {

return comment;

}

public void setComment(String comment) { https://www.wendangku.net/doc/4115897687.html,ment = comment;

}

org.hibernate.tool.hbm2x.TemplateHelper类

在freeMarkerEngine = new Configuration();后面添加freeMarkerEngine.setDefaultEncoding("UTF-8");

Spring+hibernate

课程内容 1.面向接口(抽象)编程的概念与好处 2.IOC/DI的概念与好处 a)inversion of control b)dependency injection 3.AOP的概念与好处 4.Spring简介 5.Spring应用IOC/DI(重要) a)xml b)annotation 6.Spring应用AOP(重要) a)xml b)annotation 7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要) a)opensessionInviewfilter(记住,解决什么问题,怎么解决) 8.Spring JDBC 面向接口编程(面向抽象编程) 1.场景:用户添加 2.Spring_0100_AbstractOrientedProgramming a)不是AOP:Aspect Oriented Programming 3.好处:灵活 什么是IOC(DI),有什么好处Dependecy Injection (依赖注入)依赖UserDAO a)IOC (inversion of control)控制反转,交给容器来控制 1.把自己new的东西改为由容器提供 a)初始化具体值 b)装配 2.好处:灵活装配 Spring简介 1.项目名称:Spring_0200_IOC_Introduction

2.环境搭建 a)只用IOC i.spring.jar , jarkata-commons/commons-loggin.jar 3.IOC容器 a)实例化具体bean b)动态装配 4.AOP支持 a)安全检查 b)管理transaction Spring IOC配置与应用 1.FAQ:不给提示: a)window – preferences – myeclipse – xml – xml catalog b)User Specified Entries – add i.Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\sprin g-beans-2.5.xsd ii.URI: file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resource s/spring-beans-2.5.xsd iii.Key Type: Schema Location iv.Key: https://www.wendangku.net/doc/4115897687.html,/schema/beans/spring-beans-2.5.xsd 2.注入类型 a)Spring_0300_IOC_Injection_Type b)setter(重要) c)构造方法(可以忘记) d)接口注入(可以忘记) 3.id vs. name a)Spring_0400_IOC_Id_Name b)name可以用特殊字符 4.简单属性的注入 a)Spring_0500_IOC_SimpleProperty b) 5.

Spring的HibernateDaoSupport类详解

HibernateDaoSupport: (创建一个子类对象的时候,会先创建一个父类对象)。 当LogDAOImpl继承HibernateDaoSupport的时候,程序执行报错,原因是必须要注入SessionFactory或者HibernateTemplate。因为HibernateDaoSupport是abstract类,所以无法生成HibernateDaoSupport对象来实现注入;那我们只能生成其子类LogDAOImpl的对象,在调用HibernateDaoSupport类中的set方法进行注入,但这个方法还是不行,因为HibernateDaoSupport类中的set方法为final方法。总之,我们无法使用annotation方式在HibernateDaoSupport中注入SessionFactory或者HibernateTemplate。,那么我们的LogDAOImpl类就不能使用annotation的方式生成了,我们只能(暂且,以后会有其他方法)在beans.xml中进行注入如下: 使用这种方式进行注入,我们又会有另外一个问题:假如现在有很多的DAO的实现需要继承HibernateDaoSupport,那么我们在beans.xml文件中就需要配很多的,这样仅配置文件就非常庞大了。 到现在,我们已经知道了HibernateDaoSupport怎么使用了。 使用上面的方法直接继承HibernateDaoSupport比较复杂,现在介绍一种简便的方法:我们可以把DAO抽象处理,写一个抽象类,让它去继承HibernateDaoSupport,如下: 如下修改beans.xml文件,将sessionFactory注入给它:

中文乱码解决大全

SSH开发过程中的中文问题汇总 作者:Rainisic来源:博客园发布时间:2012-01-11 14:26 阅读:50 次原文链接[收藏] 在使用SSH开发的过程中,我们经常会因为各种各样的中文乱码问题而苦恼。之前开发的过程中遇到过一些,但是都没有记录下来,这次,我就遇到的中文问题进行一个汇总,希望能够对大家有所帮助。 1. 平台环境参数 操作系统:Windows 7 旗舰版64位 JDK版本:JDK 1.6 / JDK 1.7 (此处由于JDK 7 发布不久,所以对两个版本进行测试) 开发环境:Eclipse Java EE Indigo 网站容器:Tomcat 7.0 开发框架: Struts 2.3.1.1-GA Spring 3.1.0-release Hibernate 4.0.0-Final / Hibernate 3.6.9-Final (此处由于Hibernate 4 final 刚刚发布不久,所以对两个版本进行测试) 2. 中文问题汇总 (1)HTML中未指定文件编码 问题描述:在HTML中未指定文件编码,在部分浏览器中将会出现中文乱码。 解决方案:在HTML的head标签中指定文档编码,代码如下(请根据DOCTYPE选择): // HTML 4.01 Transitional

// HTML 5 (2)表单提交使用GET方法 问题描述:在HTML form 中提交表单的时候使用method="get"导致中文乱码。 解决方案:form表单的method设置为post,代码如下:

(3)JSP文件中未指定文档编码类型 问题描述:在JSP文件中未指定JSP文档编码,在浏览器中会出现中文乱码。 解决方案:在JSP文件首部增加指定文档编码的代码,代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> (4)文件编码不正确 问题描述:由于Java文件、JSP文件等文件编码不正确,导致中文乱码。 解决方案:设置文件的默认编码为UTF-8(如果需要使用其他编码,请确保上述两个编码格式与文件编码相同) 设置方法: 当前文件编码修改:该文件右键→Properties→Resource,右侧Text file encoding→Other →UTF-8 默认文件编码修改: 0. Windows→Preferences 打开Eclipse配置选项窗口。 1. General→Content Type,右侧Text 下面所需要的文件类型Default encoding设置为UTF-8

hibernate注解说明文档

* hibernate注释说明: * @Entity——将一个类声明为一个实体bean(即一个持久化POJO 类) * @Id——注解声明了该实体bean的标识属性(对应表中的主 键)。 * @Table——注解声明了该实体bean映射指定的表(table),目录(catalog)和schema的名字 * @Column——注解声明了属性到列的映射。该注解有如下的属 性 * name 可选,列名(默认值是属性名) * unique 可选,是否在该列上设置唯一约束(默认值false) * nullable 可选,是否设置该列的值可以为空(默认值false) * insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true) * updatable 可选,该列是否作为生成的update语句中的一个列(默认值true) * columnDefinition 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植) * table 可选,定义对应的表(默认为主表) * length 可选,列长度(默认值255) * precision 可选,列十进制精度(decimal precision)(默认值 0) * scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0) * @GeneratedValue——注解声明了主键的生成策略。该注解有如下属性

* strategy 指定生成的策略(JPA定义的),这是一个GenerationType。 默认是GenerationType. AUTO * GenerationType.AUTO 主键由程序控制 * GenerationType.TABLE 使用一个特定的数据库表格来保存主键 * GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型) * GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。(这个值要与generator一起使用) * generator 指定生成主键使用的生成器(可能是orcale中的序 列)。 * @SequenceGenerator——注解声明了一个数据库序列。该注解有如下属性 * name 表示该表主键生成策略名称,它被引用在@GeneratedValue中设置的“gernerator”值中 * sequenceName 表示生成策略用到的数据库序列名称。 * initialValue 表示主键初始值,默认为0. * allocationSize 每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50. * @GenericGenerator——注解声明了一个hibernate的主键生成策略。 支持十三种策略。该注解有如下属性 * name 指定生成器名称 * strategy 指定具体生成器的类名(指定生成策略)。 * parameters 得到strategy指定的具体生成器所用到的参数。 * 其十三种策略(strategy属性的值)如下: * 1.native 对于orcale采用Sequence方式,对于MySQL和 SQL Server采用identity(处境主键生成机制),

Hibernate学习入门教程

Hibernate学习入门教程 开发环境搭建 [日期:2015-08-11] 来源:Linux社区作者:doctorJoe [字体:大中小] 其实一两个月前就在了解Hibernate方面的知识了,但一直以来,都没有好好的总结,而且一直使用的是myeclipse,感觉有些傻瓜式的操作就可以搭建起Hibernate的开发环境,但这样一点都不好,没有理解到Hibernate到底是怎么配置的,所以你今天特使用Eclipse来一步一步搭建Hibernate的开发环境,下面,正式进入正题。 在Hibernate中开启日志https://www.wendangku.net/doc/4115897687.html,/Linux/2015-07/120499.htm Hibernate+JUnit测试实体类生成数据库表https://www.wendangku.net/doc/4115897687.html,/Linux/2015-07/120161. htm Hibernate整体理解https://www.wendangku.net/doc/4115897687.html,/Linux/2014-07/104405.htm Hibernate的映射机制https://www.wendangku.net/doc/4115897687.html,/Linux/2014-12/110265.htm 新建一个web项目,名字就随便吧,你喜欢什么名字就什么吧,这是我的截图。

引入hibernate的依赖jar包,我使用的是hibernate-release-4.3.10.Final,下载好后解压,打开压缩包下的lib目录下的require文件夹,这是hibernate的所以来的必须的jar包,接下来,在刚才新建的项目里新建一个libs文件夹,将刚才的所说的jar包copy进去,另外,由于我们需要连接MySQL数据库以及使用JUnit测试,将所需的mysql-connector-java-5.0.8-bin.jar和junit-4.5.jar两个jar包引用进去,关于这些jar包,可以在网上搜索。接下来,就是把这些jar 包添加到编译环境中去,选中libs下的jar包,右击选择Build Path –>Add to Build Path,这样就把依赖jar包成功添加进去了。 继续往下,我们需要配置最重要的hibernate配置文件hibernate.cfg.xml以及进行日志处理的log4j.properties属性文件:打开上一步解压后的hibernate文件夹,打开project—>etc文件夹,将该文件夹下的hibernate.cfg.xml和log4j.properties文件拷贝到项目的src文件夹下,打开hibernate.cfg.xml文件,将session-factory标签中的内容替换成如下的内容: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:///hibernatedemo root yzp140103 这样就配置好了。 接下来,要做的就是做开发测试了:在项目的src目录下新建一个实体类包com.joe.entity,在该包下新建一个实体类Student,代码如下: package com.joe.entity; import java.io.Serializable;

马士兵hibernate文档 (个人完善版)

3. hibernate.hbm2ddl.auto : 在SessionFactory 创建时,自动检查数据库结构,或者将数据库schema 的DDL 导出到数据库。使用create-drop 时,在显式关闭SessionFactory 时,将删除掉数据库schema。 例如:validate | update | create | create-drop create :如果没有表就创建 update :如果表结构更新,就更新 validate :每次插入表的时候看看表结构有没有更新。 理论上是先建类后建表:这个时候只要你的类建好了,可以跨数据库。 实际中先建表比先建类多,建好表以后要对数据库进行优化,比如建索引,建试图,各种各样的优化。 project\etc目录下面有很多示例性的文档,log4j的文档就在那个下面。 SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); SessionFactory的建立是很耗费时间的,应该像连接池一样,只建立一次,以后要用就直接从那用。 Hibernate文档建议我们自己写一个辅助类,用单例来做。 JUnit的一个bug: @BeforeClass public static void beforeClass() { sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); } 在这句话的时候 配置文件如果有的时候写错了,她悄悄把错误隐藏起来了。 解决的方法:可以对这句话加try catch块 8.表名和类名不一致的时候: @Entity @Table(name="_teacher")

hibernate学习笔记

第一次课: 持久化:就是把瞬时状态的数据转变为持久化状态的数据,这一个过程就是持久化。 (java中内存分为:栈(变量,方法,形参都是在栈上),堆(new出来的对象在堆上)) 1)瞬时状态:刚new出来,在内存中存在的对象就是瞬时状态的。如果程序结束,对象就会被回收。 2)持久化状态:在磁盘或者是数据库中存在的数据就是持久状态。 Hibernate是什么? 1)是一个优秀的持久化框架,对jdbc进行进一步的封装。(hibernate,ibatis )。 2)是一个ORM (Object relation mapping ). Mysql,oracle,access 是关系型数据库 = hibernate操作的是对象。 使用hibernate的步骤:1)新建项目 2)引入jar包(hibernate最少依赖8个jar包) 3)新建 hibernate配置文件(hibernate.cfg.xml) ,放在src根目录下面。 用于数据库的配置信息。 com.mysql.jdbc.Driver root abc jdbc:mysql:///fwcz org.hibernate.dialect.MySQLDialect create 4)写bean/vo类,并且编写映射文件。

JSP中文乱码的产生原因及解决方案

JSP中文乱码的产生原因及解决方案 在JSP的开发过程中,经常出现中文乱码的问题,可能一直困扰着大家,现在把JSP 开发中遇到的中文乱码的问题及解决办法写出来供大家参考。首先需要了解一下Java中文问题的由来: Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312或-ecoding UTF-8编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或 <%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。 下面是一些常见中文乱码问题的解决方法(下面例子中ecoding采用的是gb2312,也可设为ecoding GBK或ecoding UTF-8): 一、 JSP页面乱码 这种乱码问题比较简单,一般是页面编码不一致导致的乱码,一般新手容易出现这样的问题,具体分以下两种情况: 未指定使用字符集编码 下面的显示页面(display.jsp)就出现乱码: JSP的中文处理 <%out.print("JSP的中文处理");%>

hibernate_annotation

Hibernate Annotation 使用hibernate Annotation来映射实体 准备工作 下载 hibernate-distribution-3.3.2.GA hibernate-annotations-3.4.0.GA slf4j 导入相关依赖包 Hibernate HOME: \hibernate3.jar \lib\bytecode(二进制) \lib\optional(可选的) \lib\required(必须的) 导入required下的所有jar包 antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar hibernate3.jar javassist-3.9.0.GA.jar jta-1.1.jar slf4j-api-1.5.10.jar slf4j-log4j12-1.5.10.jar log4j-1.2.14.jar mysql.jar ---Annotation包 ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar

简单的例子,通过annotation注解来映射实体PO 1、建立(Java Project)项目:hibernate_0100_annotation_HelloWorld_default 2、在项目根下建立lib目录 a)导入相关依赖jar包 antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate3.jar javassist-3.9.0.GA.jar jta-1.1.jar log4j-1.2.14.jar mysql.jar slf4j-api-1.5.10.jar slf4j-log4j12-1.5.10.jar 3、建立PO持久化类cn.serup.model.Teacher 内容如下 package cn.serup.model; import javax.persistence.Entity; import javax.persistence.Id; //@Entity表示该是实体类 @Entity public class Teacher { private int id ; private String username ; private String password ; //ID为主键,主键手动分配 @Id public int getId() { return id; } public void setId(int id) { this.id = id;

中文版hibernate-annotations-3.4.0.CR1-doc

Hibernate Annotations 参考文档 3.2.0 CR1 目录 前言 1. 翻译说明 2. 版权声明 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观锁定版本控制 2.2.2. 映射简单属性 2.2.2.1. 声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2. 3. 嵌入式对象(又名组件) 2.2.2.4. 无注解之属性的默认值 2.2.. 映射主键属性 2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4. 3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5. 3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4. 3. 属性

2.4. 3.1. 访问类型 2.4. 3.2. 公式 2.4. 3.3. 类型 2.4. 3. 4. 索引 2.4. 3.5. @Parent 2.4. 3.6. 生成的属性 2.4.4. 继承 2.4.5. 关于单个关联关系的注解 2.4.5.1. 延迟选项和获取模式 2.4.6. 关于集合类型的注解 2.4.6.1. 参数注解 2.4.6.2. 更多的集合类型 2.4.7. 缓存 2.4.8. 过滤器 2.4.9. 查询 3. 通过XML覆写元数据 3.1. 原则 3.1.1. 全局级别的元数据 3.1.2. 实体级别的元数据 3.1.3. 属性级别的元数据 3.1. 4. 关联级别的元数据 4. Hibernate验证器 4.1. 约束 4.1.1. 什么是约束? 4.1.2. 内建约束 4.1.3. 错误信息 4.1.4. 编写你自己的约束 4.1. 5. 注解你的领域模型 4.2. 使用验证器框架 4.2.1. 数据库schema层次验证 4.2.2. Hibernate基于事件的验证 4.2.3. 程序级验证 4.2.4. 验证信息 5. Hibernate与Lucene集成 5.1. 使用Lucene为实体建立索引 5.1.1. 注解领域模型 5.1.2. 启用自动索引 A. 术语表 前言 WARNING! This is a translated version of the English Hibernate reference documentation. The translated version might not be up to date! However, the differences should only be very minor. Consult the English reference documentation if you are missing information or encounter a translation error. If you like to contribute to a particular translation, contact us on the Hibernate developer mailing list. Translator(s): RedSaga Translate Team 满江红翻译团队 1. 翻译说明

hibernate关联注解

说明: 本文对hibernate的一对多、多对一、多对多的关联 示例代码是Order类和OrderItem类的一对多的关系 1.一对多 1.1注解方式: @OneToMany 代码示例如下: 双向关联,维护端在“多”的一端 Public class Order implements Serializable { Private Set orderItems = new HashSet(); @OneToMany(mappedBy="order"(有了mappedby不能也不该在此再定义@joincolumn),cascade = CascadeType.ALL, fetch = https://www.wendangku.net/doc/4115897687.html,ZY) @OrderBy(value= "id ASC") public Set getOrderItems() { return orderItems; } } 单向关联,维护端在此端 Public class Order implements Serializable { private Set orderItems = new HashSet(); @OneToMany(cascade = CascadeType.ALL, fetch = https://www.wendangku.net/doc/4115897687.html,ZY) @JoinColumn(name=”order_id”) @OrderBy(value= "id ASC") public Set getOrderItems() { return orderItems; } } 1.2维护端和级联问题 维护端的意思是对外键进行维护,维护端有对外键进行插入和更新的权利。 下面分情况介绍hibernate的级联操作: 1.2.1单向关联 对“一”表进行插入一条记录的操作: 1)级联类型:CascadeType.ALL 执行语句: 1.insert into category (description, name, id) values(?, ?, ?)

注解整理笔记

注解整理笔记 @是java中的注解。 JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 1@SuppressWarnings("serial") 实体类注解例子 2@Entity 3@Table(name = "T_BASE_ROLE") 5@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = CacheConstants.HIBERNATE_CACHE_BASE) //jackson标记不生成json对象的属性 4@JsonIgnoreProperties (value = { "hibernateLazyInitializer" , "handler","fieldHandler" ,"resources","users"}) public class Role extends BaseEntity implements Serializable { 6@Id 7@GeneratedV alue(strategy = GenerationType.AUTO) 8@Column(name = "ID") public Long getId() { return id;} @Excel(exportName="记录创建者", exportFieldWidth = 30) protected String createUser; 9@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") @Column(name = "CREATE_TIME", updatable = false) 10@Temporal(TemporalType.TIMESTAMP) public Date getCreateTime() { return createTime;} 11@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = https://www.wendangku.net/doc/4115897687.html,ZY) 12@JoinTable(name = "T_BASE_ROLE_RESOURCE", joinColumns = { @JoinColumn(name = "ROLE_ID") }, inverseJoinColumns = { @JoinColumn(name = "RESOURCE_ID") }) 13@OrderBy("id") public List getResources() { return resources;} 14@Transient @SuppressWarnings("unchecked") public List getResourceIds() { if (!Collections3.isEmpty(resources)) { resourceIds = ConvertUtils. convertElementPropertyToList(resources, "id"); } return resourceIds;}

乱码形成原因及消除方法大全 八

乱码形成原因及消除方法大全八 乱码形成原因及消除方法大全.txt生活,是用来经营的,而不是用来计较的。感情,是用来维系的,而不是用来考验的。爱人,是用来疼爱的,而不是用来伤害的。金钱,是用来享受的,而不是用来衡量的。谎言,是用来击破的,而不是用来装饰的。信任,是用来沉淀的,而不是用来挑战的。乱码形成原因及消除方法大全 2008-01-18 14:08乱码形成原因及消除方法大全当我们浏览网页、打开文档或邮件,运行软件时,经常会看到乱码,通常是由于源文件编码,Windows 不 能正确识别造成的的,也可能是其他原因。乱码给我们带来了太多的烦恼,为了帮助大家彻底摆脱乱码 ,下面我们就来探讨一下乱码的形成原因及其消除方法。 一、乱码有五种类型 常见的乱码,一般可以分成五种类型:第一类是文本/文档文件乱码,这一般是由于源文件编码,与

Windows使用的编码不通用造成的;第二类是网页乱码,形成原因与第一类乱码类似;第三类是Windows 系统界面乱码,即中文Windows的菜单、桌面、提示框等显示乱码,主要是Windows注册表中有关字体的 部分设置不当引起的;第四类是应用程序的界面乱码,即各种应用程序(包括游戏)本来显示中文的地 方出现乱码,形成原因比较复杂,有第二类的乱码原因,也可能是软件用到的中文链接库,被英文链接 库覆盖造成的;第五类是邮件乱码,形成原因也极其复杂。 二、如何消除应用程序的界面乱码? 目前有些软件发行了Unicode版本,这是一种通用的字符编码标准,涵盖了全球多种语言及古文和专 业符号,这种版本的软件运行在任何系统和语言上都不会乱码,如果是非Unicode编码的程序,就会有乱

Struts2+Spring+Hibernate的工作流程及原理(整理的)

Struts2框架 一、简介 Struts2是一个相当强大的Java Web开源框架,是一个基于POJO的Action 的MVC Web框架。它基于当年的WebWork和XWork框架,继承其优点,同时做了相当的改进。 1、Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可 以很好的掌控开发的过程。 2、使用OGNL进行参数传递。OGNL提供了在Struts2里访问各种作用域的 数据的简单方式,你可以方便的获取Request、Attribute、Application、 Session、Parameters中的数据。大大简化了开发人员在获取这些数据是的 代码量。 3、强大的拦截器。Struts2的拦截器是一个Action级别的AOP,Struts2中的 许多特性都是通过拦截器来实现的,例如异常处理、文件上传、验证等。 拦截器是可配置与重用的,可以将一些通用的功能如:登录验证、权限 验证等置于拦截器中以完成了系统中的权限验证功能。 4、易于测试。Struts2的Action都是简单的POJO,这样可以方便的对Struts2 的Action编写测试用例,大大方便了Java Web项目的测试。 5、易于扩展的插件机制。在Struts2添加扩展是一件愉快而轻松的事情,只 需要将所需要的Jar包放到WEB-INF/lib文件中,在Struts.xml中做一些 简单的设置就可以实现扩展。 6、模块化管理。Struts2已经把模块化作为了体系架构中的基本思想,可以 通过三种方法来将应用程序模块化:将配置信息拆分成多个文件把自包 含的应用模块创建为插件创建的框架特性,即将于特定应用无关的新功 能组织成插件,以添加到多个应用中去。 7、全局结果与声明式异常。为应用程序添加全局的Result,和在配置文件中 对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定 页面。 二、Struts2的工作机制 在Struts2框架中的处理大概分为: 1、客户端初始化一个指向Servlet容器(如Tomcat)的请求; 2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做 ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框 架的集成很有帮组,例如:SiteMeshPlugin); 3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定 这个请求是否需要调用某个Action; 4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的 处理交给ActionProxy; 5、ActionProcy通过Configuration Manager询问框架的配置文件,找到需要 调用的Action类; 6、ActionProxy创建一个ActionInvocation实例。 7、ActionInvocation实例使用命令模式来调用,在调用Action的过程前后,

hibernate关系映射注解配置

1. Hibernate Annotation关系映射有下面几种类型: 1)一对一外键关联映射(单向) 2)一对一外键关联映射(双向) 3)一对一主键关联映射(不重要,有需要看下文档即可) 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML 映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。 因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了 4)多对一关联映射(单向) 5)一对多关联映射(单向) 6)一对多关联映射(双向) 7)多对多关联映射(单向) 8)多对多关联映射(双向) 2.介绍各种映射用法 1)一对一外键关联映射(单向)Husband ---> Wife public class Husband{ private Wife wife; @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="wife_id",unique=true) public Wife getWife(){…} … } public class Wife{ } 一对一外键关联,使用@OneToOne,并设置了级联操作 @JoinColum设置了外键的名称为wife_id(数据库字段名),如果不设置,则默认为另一类的属性名+ _id 外键的值是唯一的(unique),不可重复,与另一类的主键一致 2)一对一外键关联映射(双向)Husband <---> Wife public class Husband{ private Wife wife; @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="wife_id",unique=true) public Wife getWife(){…} ... } public class Wife{ private Husband husband; @OneToOne(mappedBy="wife",cascade=CascadeType.ALL) public Husband getHusband(){…} ... } 一对一双向关联关系,使用@OneToOne 注意:需要加上mappedBy="wife",如果不加上的话,Wife也会生成一个外键(husband_id)。mappedby="wife"需要指向与他关联对象的一个属性(即Husband类里面的wife属性),这里的会在Husband表里面生成个外键wife_id字段,而Wife表里则不会生成。这里Husband作为维护端即主

AJAX提交中文乱码解决

以下是我的AJAX中文乱码的解决方案: 客户端对url进行两次转码:(str可能是中文) Js代码 1.... 2.var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+ new Date().getTime(); 3.url = encodeURI(url); 4.url = encodeURI(url); 5.... 服务器段对参数值进行解码: Java代码 1.... 2.String word = request.getParameter("word"); 3.word = https://www.wendangku.net/doc/4115897687.html,.URLDecoder.decode(word,"UTF-8"); 还可以利用js进行HEX加密,java解密. 怎么不能删除留言啊,一不小心点错了,又要被扣分.. java_mike 写道 以下是我的AJAX中文乱码的解决方案: 客户端对url进行两次转码:(str可能是中文) Js代码 1.... 2.var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+ new Date().getTime(); 3.url = encodeURI(url); 4.url = encodeURI(url); 5....

服务器段对参数值进行解码: Java代码 1.... 2.String word = request.getParameter("word"); 3.word = https://www.wendangku.net/doc/4115897687.html,.URLDecoder.decode(word,"UTF-8"); 4.... java_mike 写道 我也不是很清楚,一次不行! request.getParameter做的怪。。。 要是使用struts2的自动类型转换就不用encodeURI两次了 java_mike 写道 以下是我的AJAX中文乱码的解决方案: 客户端对url进行两次转码:(str可能是中文) Js代码 1.... 2.var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+ new Date().getTime(); 3.url = encodeURI(url); 4.url = encodeURI(url); 5.... 服务器段对参数值进行解码: Java代码 1.... 2.String word = request.getParameter("word"); 3.word = https://www.wendangku.net/doc/4115897687.html,.URLDecoder.decode(word,"UTF-8"); 4....

相关文档