You are setting up a bidirectional relation (actually any relation) you are not dealing with FK/PK precisely, - you are relating by objects - in other words, the Parent.child is defined as class Parent {Child child=null}... So when you load a parent, you can specify via the Lazy attribute whether or not you'd like to also load (initialize) the "child". So this concept works both ways - eg. Child.parent would have a definition of class Child { Parent parent=null}...
I illustrate this with Parent/Child since it is a 1-to-Many - and if you want to make it 1-to-1, then you'll declare the many side "unique". (this mapping of 1-to-M is a special mapping for implementing 1-to-1). Or you can use 1-to-1 on both sides of the mappings. However, the later forces you to use the same PK on each Entity. See reference.pdf for more details.
I recently posted a complete bidirectional 1-to-1 (using 1-to-M method & w/ unique) here:
http://forum.hibernate.org/viewtopic.php?t=956962&highlight=onetoone