# [OT] Using object store for other (java) applications

2 messages from 2009-05-31 to 2009-06-01. Participants: Johannes Schneider, Shawn O. Pearce.
Thread: https://gitlist.dev/t/19621

## Johannes Schneider, 2009-05-31 21:16

Subject: [OT] Using object store for other (java) applications
Message-ID: <4A22F39A.9010900@cedarsoft.com>
URL: https://gitlist.dev/e/4A22F39A.9010900%40cedarsoft.com

```
Hi,

what do you think: Is it possible to use the object store (hash based 
and optimized storage) within another Java application?
Maybe the JGIT implementation contains anything that could be used?
I need to store many different images within a repository, so I would 
like to try to reuse the Git storage.

Could anyone give me a hint whether it is possible (and a good idea) and 
which classes I should take a look at first.


Thanks,

Johannes

```

## Shawn O. Pearce, 2009-06-01 14:34

Subject: Re: [OT] Using object store for other (java) applications
Message-ID: <20090601143448.GF30527@spearce.org>
URL: https://gitlist.dev/e/20090601143448.GF30527%40spearce.org
In-Reply-To: <4A22F39A.9010900@cedarsoft.com>

```
Johannes Schneider <mailings@cedarsoft.com> wrote:
> what do you think: Is it possible to use the object store (hash based  
> and optimized storage) within another Java application?

Sure.  So long as your storage model fits well onto the Git object
store.  If all you want is a content keyed lookup, Git is possibly
overkill, but you could use it.

> Maybe the JGIT implementation contains anything that could be used?

Yes.  Use the Repository class to access the local repository, use
an ObjectWriter to store blobs and compute their names.  Use the
openBlob method on Repository to obtain an ObjectLoader for a blob
content you previously had stored.

ObjectWriter stores everything as loose files.  Eventually, you may
want to pack them.  Use a PackWriter.  JGit lacks `git prune-packed`
support, but this probably could be coded up in Java and contributed
to JGit with fairly little effort.

If you store data, you probably should connect the blobs into a
tree and into commits, so that the blobs are considered reachable
and can't be cleaned out by `git gc`.

But, if you only ever use your own application against the
repository, and use JGit to manage it, you would never be invoking
GC and thus would never need to worry about it.

-- 
Shawn.

```
