Hi, ich blick leider überhaupt nicht mehr durch, habe jetzt so viel gelesen, hat mich nur noch mehr verwirrt als geholfen.
Es soll jetzt eine Webapplikation werden mit JPA(EclipseLink) , JEE, JSF auf ein Glassfish Server.
Leider wurde uns im Studium nur gezeigt, wie man es mit Java Swing Applikation macht und nicht im Web Umfeld.
Also mal von Grund auf:
Habe in Netbeans eine Webapplikation erstellt mit JSF Framework.
Die benötigten Entity erstellt, JSF ManagedBean für die Verwaltung der Views.
Angenommen ein User wird erstellt.
Die Entity:
So, die View erstellt mit Hilfe ein paar Eingabefelder und der ManagedBean ein fertigen User, wobei in der ManagedBean der User als Objekt vorliegt und alles ausgefüllt ist, ausser die ID, da diese generiert wird. So weit kein Problem, aber dann kommt jetzt woran es happert.
Normal wäre doch jetzt eine Stateless Sessionbean die die Businesslogik darstellt. DIese startet eine Transaktion und leitet das Objet weiter zu einer DAO oder liege ich falsch. Die DAO muss doch dann wiederrum keine Session Bean sein oder?
Netbeans kann so viel generieren, aber da ich es eigentlich lieber selber schreibe und ich nicht weiß, wofür man den JPAController brauch und wofür die Fassade würde ich es lieber einmal erklärrt haben also irgendein wirwarr an generieten Klassen dadrin zu haben.
Businesslogik:
Die bean leitet entweder das fertige Objekt aus der ManagedBean weiter zur DAO, oder falls verteilte Transaktion notwendig sind, statet diese eine UserTransaktion und ruft die gebrauchten Methoden auf aus der DAO??
Die DAO besorgt sich per depency injektion ein EntityManager und führt die Methoden auf.
Was wäre wenn im User Objekt der ManagedBean aus irgendein Grund ein parameter nicht drin ist?
Da ist auch noch ein großes Fragezeichen bei mir.
ManagedBean und Sessionbeans.
Immoment würde ich die ManagedBean immer für die View benutzen, die erstellt immer die Objekte die persitiert werden sollen, und diese leitet immer die erstellten Objekte zur Businessschicht weiter.
Ist es totaler Quatsch was ich hier erzähle?
Eine Erklärung und/oder ein Link zum richtigen einlesen wie es gegliedert werden muss wäre sehr sehr nett. Danke euch.
Es soll jetzt eine Webapplikation werden mit JPA(EclipseLink) , JEE, JSF auf ein Glassfish Server.
Leider wurde uns im Studium nur gezeigt, wie man es mit Java Swing Applikation macht und nicht im Web Umfeld.
Also mal von Grund auf:
Habe in Netbeans eine Webapplikation erstellt mit JSF Framework.
Die benötigten Entity erstellt, JSF ManagedBean für die Verwaltung der Views.
Angenommen ein User wird erstellt.
Die Entity:
Java:
@Entity
@Table(name = "USERS")
@NamedQuery(name = "User.findUserByUsername", query = "select u from User u where u.username = :username")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private static final long serialVersionUID = 1L;
public static final String FIND_BY_USERNAME = "User.findUserByUsername";
private String username;
private String passwort;
@Enumerated(EnumType.STRING)
private Role rolle;
public String getPasswort() {
return passwort;
}
public void setPasswort(String passwort) {
this.passwort = passwort;
}
public Role getRolle() {
return rolle;
}
public void setRolle(Role rolle) {
this.rolle = rolle;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public boolean isAdmin() {
return Role.ADMIN.equals(this.rolle);
}
public boolean isOther() {
return Role.OTHER.equals(this.rolle);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final User other = (User) obj;
if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 5;
hash = 67 * hash + (this.id != null ? this.id.hashCode() : 0);
return hash;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", username=" + username + ", passwort=" + passwort + ", rolle=" + rolle + ", ablaufdatum=" + getAblaufdatum() + '}';
}
}
So, die View erstellt mit Hilfe ein paar Eingabefelder und der ManagedBean ein fertigen User, wobei in der ManagedBean der User als Objekt vorliegt und alles ausgefüllt ist, ausser die ID, da diese generiert wird. So weit kein Problem, aber dann kommt jetzt woran es happert.
Normal wäre doch jetzt eine Stateless Sessionbean die die Businesslogik darstellt. DIese startet eine Transaktion und leitet das Objet weiter zu einer DAO oder liege ich falsch. Die DAO muss doch dann wiederrum keine Session Bean sein oder?
Netbeans kann so viel generieren, aber da ich es eigentlich lieber selber schreibe und ich nicht weiß, wofür man den JPAController brauch und wofür die Fassade würde ich es lieber einmal erklärrt haben also irgendein wirwarr an generieten Klassen dadrin zu haben.
Businesslogik:
Die bean leitet entweder das fertige Objekt aus der ManagedBean weiter zur DAO, oder falls verteilte Transaktion notwendig sind, statet diese eine UserTransaktion und ruft die gebrauchten Methoden auf aus der DAO??
Die DAO besorgt sich per depency injektion ein EntityManager und führt die Methoden auf.
Was wäre wenn im User Objekt der ManagedBean aus irgendein Grund ein parameter nicht drin ist?
Da ist auch noch ein großes Fragezeichen bei mir.
ManagedBean und Sessionbeans.
Immoment würde ich die ManagedBean immer für die View benutzen, die erstellt immer die Objekte die persitiert werden sollen, und diese leitet immer die erstellten Objekte zur Businessschicht weiter.
Ist es totaler Quatsch was ich hier erzähle?
Eine Erklärung und/oder ein Link zum richtigen einlesen wie es gegliedert werden muss wäre sehr sehr nett. Danke euch.