Milyen a Java Enterprise Edition?
Eddig csak Java SE-el foglalkoztam. Tudom, nézzek dokumentációt meg minden hasonló, amit ilyenkor lehet mondani. De inkább személyes "tapasztalatokra" vagyis kíváncsi, te ha használtad, akkor mit kellett csinálnod; milyen problémák megoldására alkalmas?
Sajnos éles munkatapasztalatom nincs így nem tudok annyira belelátni a dolgokba. Köszönöm ha válaszolsz.
"Milyen a Java Enterprise Edition?"
Kék.
Én a szakdolgozatom, ha mondhatjuk közvetetten JavaEE-ben írom. Pont egy vállalat belső rendszeréhez.
Kifejtem
JavaEE helyett inkább (keret)rendszereket használok, de Wiki-n megtudod nézni, hogy ezek micsodák
- Spring Framework
- Hibernate Framework
- Thymeleaf Template Engine
Továbbá fűszerezve van ezekkel:
- Maven
- Git
- Sass
- TypeScript
De a lényeg, hogy az EE egy "bővített" változat az SE-hez képest.
Pl. #1: JDBC helyett egy JPA egyszerűbb, sőt megkímél az natív SQL-től (azaz nincs "select * from ...", "insert into ", stb), hanem objektum szinten dolgozik. Néz utána: ORM
Azaz csinálsz egy objektumot ami megegyezik az adatbázissal.
pl.: MySQL alatt
tabla(
... id INT NOT NULL PRIMARY KEY
... name TEXT NOT NULL
)
Ezt POJO-nak szokták hívni, ami egy táblának felel meg.
@Entity
@Table(name = "tabla")
public class UserDomain implements Serializable {
... @Id
... @GeneratedValue(strategy = GenerationType.IDENTITY)
... @Column(name = "id")
... private Integer id;
... @Column(name = "name")
... @OrderBy
... private String name;
... /* getterek és setterek még */
}
Egy rekord hozzáadása Hibernate/JPA közreműködésével:
@Repository("UserDao") // @Autowire esetén nem userDaoImpl, hanem userDao csak, mert átneveztem, ez működik @Service("masiknev") esetán is
public class UserDaoImpl implements UserDao {
... @Autowired //lásd köv példa
... private SessionFactory sessionFactory;
... public Integer addUser(String name) {
... ... Session session = this.sessionFactory.getCurrentSession();
... ... Integer result = null;
... ... try {
... ... ... session.getTransaction().begin(); // tranakciót indítok
... ... ... UserDomain pojo = new UserDomain();
... ... ... pojo.setName(name); // Ezt a nevet adja hozzá
... ... ... session.save(pojo); // legenerálja az "INSERT INTO-t" POJO segítségével és le is futtatja
... ... ... result = pojo.getId(); // kitölti az ID-t amit kapott, tehát lekérdezhető
... ... ... session.getTransaction().commit(); // ha hozzá tudja adni, akkor adja is hozzá
... ... } catch (Exception e) {
... ... ... e.printStackTrace();
... ... ... session.getTransaction().rollback();
... ... }
... ... return result;
... }
}
Pl. #2: Arcodba tol rengeteg annotációt.
@Inject (@Autowire Spring annoval egyezik meg). Én mivel Spring-et használom, az @Autowire-t inkább.
példa kód:
@Service
public class EzEgyServiceClass {
... @Autowire
... private UserDao userDao; // átnevezés miatt userDao, nem userDaoImpl
... public void addUser(String name) {
... ... this.userDao.addUser(name);
... }
}
public class EzEgyAlapClass {
... @Autowire
... private EzEgyServiceClass ezEgyServiceClass;
... public EzEgyServiceClass getEzEgyServiceClass() {
... ... this.ezEgyServiceClass.userAdd("KedvesKerdezoUser");
... }
}
public class EzEgyMasikClass { // például
... @Autowire
... private EzEgyServiceClass ezEgyServiceClass;
... public EzEgyServiceClass getEzEgyServiceClass() {
... ... this.ezEgyServiceClass.userAdd("EgyTeljesenMasikUser");
... }
}
"EzEgyServiceClass ezEgyServiceClass" név egyezés nem véletlenül van, innen ismeri fel, hogy mit hova. Persze felül definiálható.
Spring (hogy a JavaEE is azt nem tudom, de @Inject miatt gondolom igen) felismeri, hogy mely osztályt kell bele példányosítani az attr-ba. Tehát ő háttérben csinál egy settert (elemzési időben), amit neked nem kell kiírni, és mikor pl. így hívom -> new EzEgyAlapClass().getEzEgyServiceClass() és egy rekorddal több lesz az adatbázisban. :) Tehát nem null lesz az az attribútum.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!