我今天学习了徐老师讲的ejb3的知识,我做了简单的笔记:
上午讲的是jpa的知识,下午讲的是EJB3的知识:
JPQL语句:hibernate的HQL语句一样。
简单查询:
Query query = em.createQuery("SELECT c FROM Customer c");
return query.getResultList();
命名查询
@Entity
@NamedQuery(name = "findCustomerByName",
query = "SELECT c FROM Customer c
WHERE c.name
LIKE :name ")
分页:
query = em.createNamedQuery("findCustomerByName");
query.setParameter("name", "t,om");
query.setMaxResults(10);
query.setFirstResult(3);
List customers = query.getResultList();
设置参数:
SELECT o FROM Order i WHERE i.orderNo = ?1
query.setParameter(1, 100.00);
SELECT o FROM Order i WHERE o.price = :price
query.setParameter("price", 100.00);
单个实体检索
query.getSingleResult();
查询集合:
WHERE c.orders IS EMPTY
WHERE CONCAT(c.fname, c.lname) = 't,om'
SELECT c.id, c.name FROM Customer c
多态查询
SELECT c FROM Customer c WHERE c.name LIKE :name
分组
SELECT o.customer, COUNT(o.id) FROM Order o
GROUP BY o.customer
排序
order by
子查询
SELECT o FROM Order I WHERE o.customer IN
(SELECT c FROM Customer c WHERE c.name LIKE ?1)
EJB3
EJb3提供了完整的服务器解决方案栈.如持久化、消息、轻量级调度、远程访问、web service、DI、拦截器等.我们不需要再花费时间开发类似功能.即重用.
EJB3 类型
Session beans
Message-driven beans
Entities
每种类型的bean用于特定目的并可使用EJB服务的一个
子集.Bean类型的真正目的是防止服务的交叉装配导致
的超载.Session Bean和消息驱动Bean用于构建业务
逻辑,他们驻留在容器中,由容器来进行管理.实体Bean
用于对Model进行建模.持久化供应商是可插拔的.
Session Bean
用于特定业务逻辑由客户端调用,Session名称意味着
在整个工作单元期间都可用,在服务器宕机或停止后销毁
它可为任何应用逻辑功能进行建模.
Stateful
无需手动编码,在客户端调用时可自动保存bean状态信息.
Stateless
可通过java rmi进行远程/本地调用,还可暴露成ws
Message-Driven Bean
同Session Bean相似,也用来处理业务逻辑,不同之处在于客户端从不会直接调用消息驱动Bean.他是由
发送到服务器的消息触发的,可用于在系统组件间进行异步消息的发送.
今天学的知识就是这些了,希望明天有更好的状态学习。