[jbosstools-issues] [JBoss JIRA] Commented: (JBIDE-2077) "Make this class and its related classes mapped via JPA"

Vitali Yemialyanchyk (JIRA) jira-events at lists.jboss.org
Wed Aug 27 09:52:38 EDT 2008


    [ https://jira.jboss.org/jira/browse/JBIDE-2077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12426902#action_12426902 ] 

Vitali Yemialyanchyk commented on JBIDE-2077:
---------------------------------------------

Here is my view to implement it:
1) Add context menu to "Package Explorer"/"Navigator"/"Java editor" for java class "Make it mapped via JPA";
2) For class Address (for example) add:
@Entity  <-- add this
// name defaults to the unqualified classname
public class Address 
    implements java.io.Serializable {  <-- add this

    // Entity must have a no-argument public or protected constructor  <-- add this if no constructor
    public Address() {} <-- add this if no constructor
}
3) for getters:
    ...
    @Column(name="addressID")  <-- add this
    public String getAddressID() {}  <-- add this - for property-based access

for private/protected field - property-based access using getters/setters;
for public fieilds - field-based access;

    @Column(name="addressID")  <-- add this - for field-based access
    public String addressID;
4) for transient properties - add @Transient annotation for getters/setters;
5) for all abstract classes in the bundle add this comment
    // abstract class can't be an entity <-- add this
6) for all abstract methods in the bundle add this comment
    // abstract method not suitable for the entity <-- add this
7) try to intellectually define primary id - for example only 1 property in class with name id or property which contains class name and id, "?some other methods?"
    @Id
    // primary key  <-- add this 
    public String getAddressID() {
    }
8) try to define composite keys - is it posiible?
9) try to define @OneToMany and @ManyToMany relationships;
10) try to define @Inheritance and it's strategy SINGLE_TABLE - for example;
11) things which is possible to ask the user:
    a) DB connection for this java classes bundle - if user point it - we could generate better persistent model;
    b) in common case it is possible to ask the user about any ambiguity in the bundle and possible use checkbox "use deaults"


> "Make this class and its related classes mapped via JPA"
> --------------------------------------------------------
>
>                 Key: JBIDE-2077
>                 URL: https://jira.jboss.org/jira/browse/JBIDE-2077
>             Project: Tools (JBoss Tools)
>          Issue Type: Feature Request
>          Components: Hibernate
>            Reporter: Vitali Yemialyanchyk
>            Assignee: Vitali Yemialyanchyk
>            Priority: Minor
>             Fix For: 3.0.0.beta1
>
>
> Denis Golovin:
> >>>
> Let's imagine I have several (say 10) classes that I'd like to make
> persistent. The classes form completed domain model.
> I decided to use hibernate and JPA annotations, I have lets say JBDS
> 1.1.0 or JBossTools 2.1.0 installed.
> Question is what I should do to make my model persistent? It there
> anything that helps me to do it?
> Now I see only way. I have to go through all classes and add annotations
> for class and for fields.
> >>>
> Max Andersen:
> >>>
> Having a "Make this class and its related classes mapped via JPA" would be 
> an interesting Refactoring to implement.
> Should basically just work like this:
> makePersistent(ITypeRoot clazz, Set processed) {
>   add @Entity 
>   Find most likely id property and add @Id  
>  processed.add(selectedClass);
>  associations = getAssociatedClasses(selectedClass);
>  foreach class in associations {
>   if(!processed.contains(class)) {
>        makePersistent(class, processed);     
>   }  
> }
> }
> There then might be some exceptional cases like handling version properties, temporal values and
> non-JPA supported mappings which Hibernate would be able to understand/map.
> >>>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbosstools-issues mailing list