Орчин:
- jdk 1.5 ба түүнээс хойших хувилбар
- Eclipse
- - yourproject.jar
- -META-INF
- - ejb-jar.xml
- - persistence.xml
- - MANIFEST.MF
- -Your classes
- - ...
ejb-jar.xml - н бүтэц:
persistence.xml - н бүтэц:
fifaEJB: Прожектийн апликэшн серверт бүртгэгдэх нэр. Нэг серверийн хувьд давтагдахгүй байх шаардлагатай.
java:/fifаDS: - Data Source
Datasource үүсгэх:
MySQL server - н datasource үүсгэе. mysql-ds.xml file үүсгэж серверийнхээ 'deploy' directory-руу хуулна. mysql-ds.xml бүтэц:
jbossserverdocsexamplesjca хавтас дотор бүсад database хэв файлууд байгаа.
eclipse дээрээ прожектоо үүсгэ
Зураг дээр харагдаж байгаа бүх сангуудыг прожектдоо зааж өгөөрэй.
Entity bean :
User.java
package mn.dalais.example.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "User")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = -978269922594938178L;
private Integer id;
private String username;
private String password;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
// ************ Xerev oracle server ashiglaj bgaa bol Auto increment filed-ee ingej zaaj ogno. *****
// @SequenceGenerator(name = "USER_SEQ", sequenceName = "USR_USER_SEQ",
// allocationSize = 50, initialValue = 10000)
// @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
// "USER_SEQ")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
Энэ session bean-г
нь ямарч програмд хэрэглэж болхоор бичсэн тул зүгээр л copy&past
хийгээд үүсэгчих. Чи програмынхээ Entity bean-үүдийг л үүсэгэхэд
хангалттай. Програмын чинь middle tier бэлэн боллоо л гэсэн үг.
Session Bean:
SessionFacadeLocal.java
package mn.dalais.example.session;
import java.util.List;
import javax.ejb.Local;
@Local
public interface SessionFacadeLocal {
public Object update(Object object);
public void create(Object object);
public void refresh(Object object);
public void remove(Object object);
public List
}
SessionFacadeRemote.java
package mn.dalais.example.session;
import javax.ejb.Remote;
@Remote
public interface SessionFacadeRemote {
}
SessionFacadeBean.java
package mn.dalais.example.session;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author Delgerdalai /S.70ai/ 2006.07.26
*
*/
@Stateless
public class SessionFacedeBean implements SessionFacadeLocal,
SessionFacadeRemote {
@PersistenceContext
EntityManager em;
public static final String RemoteJNDIName = SessionFacedeBean.class
.getSimpleName()
+ "/remote";
public static final String LocalJNDIName = SessionFacedeBean.class
.getSimpleName()
+ "/local";
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public Object update(Object object) {
Object obj = em.merge(object);
em.flush();
return obj;
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void create(Object object) {
em.persist(object);
em.flush();
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void refresh(Object object) {
em.refresh(object);
em.flush();
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void remove(Object object) {
final EntityManager emanger = em;
emanger.remove(emanger.merge(object));
emanger.flush();
}
@SuppressWarnings("unchecked")
public List
try {
Query query = em.createQuery(qry);
if (params != null) {
if (params.length > 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i + 1, params[i]);
}
}
}
return query.getResultList();
} catch (Exception e) {
// exception call admin :P
}return null;
}
}
Interface lookup хийх.
InitialContext defaultContext = new InitialContext();
SessionFacadeLocal local = (SessionFacadeLocal) defaultContext.lookup(SessionFacedeBean.LocalJNDIName);
user үүсгэх:
User user = new User();
user.setUsername("dalai");
user.setPassword("password");
local.create(user);
select :
List users = local.createQuery("from User u",null);
List start_a_users = local.createQuery("from User u where u.username like '?1%'", new Object[] {"a"});
Deploy хийх:
project - оо jar file болгож export хийгээд серверийнхээ deploy directory-руу хуулна.
ингээд л боллоо. Заавал ашиглаж үзээрэй.
С.Дэлгэрдалай
14 сэтгэгдэл:
@Remote ashiglah shaardlagagui bol Entity bean - iig Serializable hiih zailshgui shaardlagagui baih. performance - d nuluulnu gej unshisan yum bn.
Yer ni bol zov, Gexdee zarim tohioldoluud baidag, JSF framework ashiglaj baixad bean class-daa entityBean class-aa shuud ashiglaad yavah toxioldol zond ni gardag, yamar dahiad ijilxen class uusgeltei bish , ter tohioldold Serializable implement xiisen baix yostoi gej shaarddag shig sanagdaad bn,
createQuery function ih zugeer sanaa baina shuu. Ene tohioldold CMP baih shig baina te. createQuery function ni Update Remove Insert teigee neg transaction d baih ni her zuv be. Bas createQuery function container deer ajillah uu.
Ene session bean -nii xuvid transaction ogt implement xiigdeegui, autocommit baigaa gesen ug, yamar vaa neg uildel xiigdeed shuud db server luu oorchilolt orj baigaa. @TransactionAttribute(TransactionAttributeType.REQUIRED) Ene-g bi oilgoxdoo autocommit l gej oilgoj baina , bur ix nariiniig ni sain medexgui yum :). Transaction orood irvel tusgai zoriulalttai session bean uusegsen ni deer baix, Ene bol eronxii l session bean bgaan :). Sanal bodloo xuvaaltsaj baigaad bayarllaa. Chi opennet -d author boloxgui yum uu. Byambaa ?
Bi oiolgohdoo Transaction bol baigaa. Harin CM - eer udirdagdaj baina. Ene session bean iig ashiglaj baigaa buh instancuud neg transaction - d hariyalagdaad baina gej oilgood baina l daa. select, update, delete bugd. @PersistenceContext EntityManager em; ene bichigleliin orond @PersistenceUnit(unitName = "aiaxPU") private EntityManagerFactory emf; EntityManager em = this.emf.createEntityManager(); /* select */ em.close(); ashiglaval. Tegeed bas read only bolon writable methoduudiig salgaj 2 session bean bichih heregtei baih. Neg ni CMP nuguu ni BMP. Ene zugeer ni minii sanal bolgoj baigaa shiidel Gehdee end zuv buruu sain muu gej bicheegui shuu :).
Bayarlalaa hugshuun. Tegvel hugshinduu neg erh neegeed uguurei.
Minii GOGO ID "superuser" shuu.
Bi neg l sain oilgoxgui bain , Chi ooriin implementation xiisen session bean - ee uzuuleech xo. :), Iluu sain shiidel baix :)
Request yavuulcan accept xiigeerei :)
Udahgui SDK-n bichleg deer uulzaya
hey EJB3.0 deer BMP bhgvi bolood orond n JPA orj irsen geed bgaa ene talaar jahan yum heleech ho
Tegeed bas CMP bean yaj vvsgeed yaj ajilaad bgaag sain oilgodogvi ee tuslaach pls !!!!!!!!!!!
@EJB RemoteInterface int;
ene ajilahgvi bna yahuu
pooh odoo dahiad xaigaad uzsen deer bxaa, buten 2 jil ongorson bn shuu dee, ene bichlegnees xoish.
Wow neree tiim bna shde
Manarch yum haij yawsaar bgaad t1 boltson bna gehde ern bol bolgochihson
gehde yag ene hesegiig yaj ajilj bgag n oilgohgvi bga
@EJB RemoteInterface int;