Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!feeder2.ecngs.de!ecngs!feeder.ecngs.de!Xl.tags.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!local2.nntp.ams.giganews.com!nntp.bt.com!news.bt.com.POSTED!not-for-mail NNTP-Posting-Date: Tue, 17 Dec 2013 02:47:26 -0600 Date: Tue, 17 Dec 2013 08:47:21 +0000 From: lipska the kat <"lipskathekat at yahoo dot co dot uk"> Organization: Trollbusters 3 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: Java EE Architecture References: <69e1528a-aa62-41ce-88e5-1540f437e89e@googlegroups.com> <0672ja-utj.ln1@tempest.fredriksson.dy.fi> <2IMru.14$TA.9@fx09.iad> In-Reply-To: <2IMru.14$TA.9@fx09.iad> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Message-ID: Lines: 111 X-Usenet-Provider: http://www.giganews.com X-AuthenticatedUsername: NoAuthUser X-Trace: sv3-X8W7QpN48H0R9YK4ssnRBgh17yCHeT6gwrmOGqJDnJg4hvnDlHlWS3yUCo5srHvLbG/qG4oig/r12zr!kTz9uWaIMTv4HeiR9h9YJ1+gx0129ZKW58x9WGhgtqFEdQ12Q7TcdgoBQQYHPZoyIARM/WcN28KZ X-Complaints-To: abuse@btinternet.com X-DMCA-Complaints-To: abuse@btinternet.com X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 5572 Xref: csiph.com comp.lang.java.programmer:26964 On 17/12/13 00:14, Arved Sandstrom wrote: > On 10/16/2013 07:55 AM, lipska the kat wrote: >> On 16/10/13 11:42, Donkey Hottie wrote: >>> 16.10.2013 11:45, 1connu kirjoitti: >>>> lipska the kat a écrit : >>>>> On 09/10/13 21:41, art.marole@gmail.com wrote: >>>>>> Hi all, >>>>>> >>>>>> I would like to prepare typical Java EE solution (EJB, JSF, JPA) now, >>>>>> and I have quite stupid problem related with domain objects. I want >>>>>> to create Person class as persistence class, but I don't know in >>>>>> which module I shoud put this class: Business Layer (ejb module) or >>>>>> in Integration Layer (jar module). >>>>>> >>>>>> Person class is more related with logic, so I should put it in ejb >>>>>> module, but in this case I will need to create dependency relation >>>>>> from Integration Layer to Business Layer as Integration Layer need to >>>>>> know what object should store in DB (ex. void store(Person >>>>>> object){};). >>>>>> Put Person class in Integration Layer will remove this unwanted >>>>>> dependency, but I feel that Person class is more Business class then >>>>>> Integration class. >>>>>> >>>>>> What do you think about it? >>>>> >>>>> >>>>> A Person class ... A PERSON class., please, please, *please* don't >>>>> have a Person class >>>>> >>>>> For the sake of whatever omnipotent deity you pray to, do not have a >>>>> Person class >>>>> >>>>> *People* do not belong in a computer system. >>>>> >>>>> Why? >>>>> >>>>> Because it's a poor abstraction. >>>>> >>>>> How are you going to model consciousness, sentience, the 'mind', the >>>>> 'soul'? let alone arms legs, eyes and teeth :-) >>>>> >>>>> You *do not need* a Person class. >>>>> >>>>> Let's put it another way >>>>> >>>>> The very fact that you are having problems deciding where your Person >>>>> belongs should alert you to the fact that it is a poor abstraction. >>>>> >>>>> Try Account, or Record, or if you absolutely *must* User but not >>>>> Person, you will end up regretting it. >>>>> >>>>> lipska >>>>> >>>>> >>>> Why not ? >>>> You can have an abstract class Person with minimum field (name, date >>>> birth) and sub class depending of role of theses persons (ex User >>>> (login/password) ) in your model. >>> >>> I see no problem with Person. >>> >>> I have interface IPerson, and implementations Person and ExternalPerson. >>> I'm a lead programmer on an Identity Management solution. >> >> You *cannot* be serious ... IPerson groan :-( >> >> If you are developing an Identity Management system surely Identity >> might be a better abstraction ... just a thought. > > Must admit, IPerson made me cringe too. In any context I can think of. > > I'm not as antagonistic to the Person concept as an implementation. > Despite what you said, all a coder needs to do with that concept is > model just what they need. If I was going to model a pedestrian mobility > study using some random algorithms, I might well call my discrete > construct a Person. What about ... oh I don't know, Pedestrian? It kind of says what it is, doesn't it? What about guide dogs? You say "all a coder needs to do with that [Person] concept is model just what they need" Well this is the point isn't it? To me, saying that you just model what you need implies that the component you are modeling could be made less complex by reducing the concept to a more limiting name. Person could mean anything, Pedestrian means Pedestrian, nothing more. Contrary to what some respondents to this thread think, this is not a dogmatic or idealogical view on my part. I have proved to myself and others (so far) by practical application that all a Person class does is confuse the issue at hand. It's all about focusing our imperfect minds on complex problems. Giving things suitably limiting names helps us to discard issues irrelevant to the current problem space. Good to chat with you again Lipska -- Lipska the Kat©: Troll hunter, sandbox destroyer, treacherous feline and farscape dreamer of Aeryn Sun GNU/Linux user #560883 - http://www.linuxcounter.net