摘要:一个问题的出现,往往是由于某些原因导致的,从源头找起。这个问题主要是由于建立多对一关系映射的时候出现两个重复的定义。比如hibernate中:<property name="schedule_id"/><many-to-one name="schedule" column="schedule_id"/>如果真的能够在数据库生成的话,那么数据库将出现两个schedule_id的错误,那肯定个是不行了解决方式:去掉其中一个,合理的做法,去掉上面那个定义JPA形式:private String scheduleId;
阅读全文
摘要:如果不想让一些属性映射成数据库字段,可以使用@Transient注释进行标注FetchType属性指定是否延迟加载,optional指定生成数据库结构时字段能否为null@Basic注释定义如下:public @interface Basic { FetchType fetch() default EAGER; boolean optional() default true;}延迟加载注释:@Basic(fetch=FetchType.LAZY)public String getContent() { return content;}@Temporal主要来指明java.util...
阅读全文
摘要:persistence.xml配置文件:<?xml version="1.0" encoding="UTF-8"?> <!-- Persistence deployment descriptor for dev profile --><persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca
阅读全文
摘要:定义:消息驱动是专门用来处理基于消息请求的组件。消息模型:点对点消息传递和发布/订阅消息传递点对点消息传递模型:一条信息只能传递给一个队列接收方发布/订阅消息传递:一条消息可以由多个接收者接收详细解析:首先它是无状态的Session Bean,客户端调用MDB时,无需等待,可以立即返回,MDB会异步处理客户的请求;MDB必须实现MessageListener接口,当容器守候检测到一条队列信息时,将调用onMessage()方法。适用范围:当一个业务执行很长,然后又无需将结果实时反馈客户时,适合使用MDB;如订单成功后向客户发送一条成功短信或者一封邮件。Queue消息:(PTP消息传递模型)通过
阅读全文
摘要:EJB3.0的定时服务开发过程:关键点:首先需要使用容器对象SessionContext创建定时器,然后使用@Timerout声明定时器方法声明:@Resource SessionContext ctxContext调用:ctxContext.getTimerService().createTimer(X,X...)方法规范:在方法上面加上@Timerout要遵循这样的规范:void XXX(Timer timer),在定时器发生时,改方法将被执行相关代码:
阅读全文
摘要:Session Bean的种类:分为有状态的会话Bean和无状态的会话Bean(Stateful Session Bean和Stateless Session Bean)Session Bean的作用:Session Bean是用来实现业务逻辑的,Session Bean可以直接操作数据库,通过Entity Bean实现数据库的访问无状态的Bean:无状态Bean能够被启用很多次,该Bean是可以重复使用的,就是实例化的一个实例可以由任意用户调用,在EJB容器中实现共享,性能方面往往比有状态的Bean更为优越些。负责记录使用者的状态有状态的Bean:每次客户调用都初始化一个对象,每个用户都拥有
阅读全文
摘要:JNDI定义:他是java应用中用来访问命名或者目录服务的一组API。作用:为开发人员提供查找和访问目录或者命名服务的统一方式,通过JNDI的接口,名称定位相应的服务、机器、网络等等。规范:现在有很大的目录服务器,比如LDAP、JBOSS应用服务器、SUN应用服务器,但是只要遵循相应的统一接口,就能够操作相应的模块。JNDI例子:Properties props= Properties();props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactor
阅读全文