Thanks Ard. Yes, I had seen it, and it was helpful. I very much appreciate David's attempts to get the ball rolling on it. Unfortunately, it's probably only the tip of an iceberg and I didn't see anything that helped me with my particular interests.
Ard Schrijvers wrote: > > Not sure wether this is too abstract for you, but you might want to take a > look over here: > > http://wiki.apache.org/jackrabbit/DavidsModel > > Regards Ard > > > > I thought I would augment my question with a (simplified) example of what > I'm > trying to do. Starting with a very basic approach: > > Node root = session.getRootNode(); > Node album = root.getNode("MyAlbum"); > Node songs = album.getNode("songs"); > Node song = songs.addNode("MySong"); > song.setProperty("genre", "funky"); > session.save(); > > I've expanded this into a richer object model: > > public class Album{ > > public static void main(){ > > Session session = null; > > try{ > session = Repository.login(); > Node root = session.getRootNode(); > > Album myAlbum = new Album(root.getNode("MyAlbum")); > Song mySong = album.addSong("MySong"); > mySong.setGenre("funky"); > myAlbum.save(); > } > catch(Exception e){ > System.err.println(e.getMessage()); > } > finally{ > if(session != null) > session.logout(); > } > } > } > > > class Album{ > > private Node _album; > > public Album(Node album){ > _album = album; > } > > public String getName(){ > Property name = _album.getProperty("name"); > return name.getString(); > } > > public Song addSong(String name){ > Node songs = _album.getNode("songs"); > Node song = songs.addNode(name); > return new Song(song); > } > > public void save(){ > _album.save(); > } > } > > class Song{ > private Node _song; > > public Song(Node song){ > _song = song; > } > > public void setGenre(String genre){ > _song.setProperty("genre", genre); > } > } > > What are your thoughts? Am I doing anything that might cause issues as > things get more complex? I'm new to the concept of JCR, so I'm very > interested in learning how I can use it in my code as naturally as > possible. > > Personally, I feel the "addSong" method is a little awkward, but I don't > really see another way to do it. Also, how long should sessions live? With > relational databases, best practice is to open and close the connection as > quickly as possible. However, it seems like JCR sessions can/should stay > open much longer. Any thoughts/tips/examples are very much appreciated! > > > > loproman wrote: >> >> Hi, >> >> Does anyone know if there has been any research or documentation >> developed >> on best practices working with repositories? Specifically, I'm wondering >> if there are any ideal patterns out there for working with the JCR API. >> I've seen lots of primitive examples where nodes are accessed directly >> via >> "getNode" and "addNode" etc. However, I think a more scalable solution >> would need to wrap nodes with domain logic (similar to how DTO objects >> are >> used with a relational database I suspect). Thanks! >> > > -- > View this message in context: > http://www.nabble.com/Jackrabbit-Best-Practices-Design-Patterns-tf4762615.html#a13624765 > Sent from the Jackrabbit - Users mailing list archive at Nabble.com. > > > > > -- View this message in context: http://www.nabble.com/Jackrabbit-Best-Practices-Design-Patterns-tf4762615.html#a13636511 Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
