ejb3学习札记4
ejb3学习笔记41数据源: 详细定义??? jndi-nameMSSQLDS/jndi-name??? connection-urljdbc:sqlserver:
ejb3学习笔记4
1数据源: 详细定义
??? <jndi-name>MSSQLDS</jndi-name>
??? <connection-url>jdbc:sqlserver://localhost:1433;DatabaseName=EJB</connection-url>
??? <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
??? <user-name>sa</user-name>
??? <password>123456</password>
?
2 配置实体bean
?
- @SuppressWarnings("serial")??@Entity??
- @Table(name="person")?? public?class?Person?implements?Serializable{??
- ??????????private?Integer?id;??
- ????private?String?name;?? ??????
- ????public?Person(){?? ????}??
- ??????????public?Person(String?name){??
- ????????this.name?=?name;?? ????}??
- ??????????@Id?@Column(name="id")?@GeneratedValue(strategy=GenerationType.IDENTITY)??
- ????public?Integer?getId()?{?? ????????return?id;??
- ????}??????public?void?setId(Integer?id)?{??
- ????????this.id?=?id;?? ????}??
- ??????????@Column(name="name",?length=20,?nullable=false)??
- ????public?String?getName()?{?? ????????return?name;??
- ????}??????public?void?setName(String?name)?{??
- ????????this.name?=?name;?? ????}??
- ??????????@Override??
- ????public?int?hashCode()?{?? ????????final?int?prime?=?31;??
- ????????int?result?=?1;?? ????????result?=?prime?*?result?+?((id?==?null)???0?:?id.hashCode());??
- ????????return?result;?? ????}??
- ????@Override??????public?boolean?equals(Object?obj)?{??
- ????????if?(this?==?obj)?? ????????????return?true;??
- ????????if?(obj?==?null)?? ????????????return?false;??
- ????????if?(getClass()?!=?obj.getClass())?? ????????????return?false;??
- ????????final?Person?other?=?(Person)?obj;??????????if?(id?==?null)?{??
- ????????????if?(other.id?!=?null)?? ????????????????return?false;??
- ????????}?else?if?(!id.equals(other.id))?? ????????????return?false;??
- ????????return?true;?? ????}??
- ??????}??
??
?
?
3 在jar META-INF 创建persistence.xml
?
- <?xml?version="1.0"?encoding="UTF-8"??>??<persistence?xmlns="http://java.sun.com/xml/ns/persistence"??
- ????????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?? ????????????xsi:schemaLocation="http://java.sun.com/xml/ns/persistence?http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"?version="1.0">??
- ????<persistence-unit?name="itcast"?transaction-type="JTA">?? ????????<jta-data-source>java:MSSQLDS</jta-data-source>??
- ????????<properties>??????????????<property?name="hibernate.hbm2ddl.auto"?value="update"/>??
- ????????????<property?name="hibernate.show_sql"?value="true"/>?? ????????????<property?name="hibernate.format_sql"?value="true"/>??
- ????????</properties>??????</persistence-unit>??
- </persistence>??
??
4 dao
?
- @Stateless??@Remote(PersonService.class)??
- public?class?PersonServiceBean?implements?PersonService{?? ????@PersistenceContext(unitName="itcast")?EntityManager?em;??
- ??????????public?void?delete(Integer?personId)?{??
- ????????em.remove(em.getReference(Person.class,?personId));?? ????????//返回而?代理对象 ??
- ????}????
- ????public?Person?getPerson(Integer?personId)?{?? ????????return?em.find(Person.class,?personId);??
- ????}????
- ????@SuppressWarnings("unchecked")?? ????public?List<Person>?getPersons()?{??
- ????????return?(List<Person>)?em.createQuery("?select?p?from?Person?p?").getResultList();?? ????}??
- ??????public?void?save(Person?person)?{??
- ????????em.persist(person);??????}??
- ??????public?void?update(Person?person)?{??
- ????????em.merge(person);??????}??
- }??
?
在dao 中:
@PersistenceContext(unitName="foshanshop") protected EntityManager em;
?
属性:
@Transient 实体bean默认全体成员都会持久, 该注释表示不持久某项
@Enumerated(EnumType.STRING)
public CommentType getType(){
}
?
public enum CommentType{
???? NEWS{public String getName(){reutrn "新闻";}},
???? PRODUCT{public String getName(){reutrn "产品";}};
???? public abstract String getName();
}
?
@Lob 映射Blob? Clob
@Basic(fetch=FetchType.LAZY) 加在lob大文件时 延迟加载
@Temporal 指定时间类型
@Embedded