Please add any relevant technologies and some information about them!

Data persistence / query

Hibernate gives you transparent persistence for Plain Old Java Objects. 'Transparent' here refers to the fact that it works through it's own session objects - you don't have to change a line of your java code to make a class persistent. There are all sorts of developments afoot with respect to queries in hibernate, but the basic mechanism is to use Hibernate Query Language, a minimal modification of SQL to make it more objecty. It can make navigating persistent object graphs very much easier. e.g. "Find me bitstreams of type 'application/pdf' on Items submitted by 'Fred loggs'" would be something like this is HQL: -

select b from itstream b where b.format.MIMEType='application/pdf' and b.item.submitter.name='Fred loggs';

I don't like to think what it would be in SQL. You can also deal with graphs of objects without worrying too much - hibernate can cascade updates and maintain one-to-many and many-to-many relationships: -

Item i = new Item();
i.setOwner(context.getEPerson());
i.addCollection(coll1);
hibernateSession.save(info);

Metadata serialisation format

Modularity